-2

クラスを使用してxmlファイル全体を単一の文字列として読み取りました。出力は

String result=<?xml version="1.0"?><catalog><book id="bk101"><part1><date>Fri Apr 05 11:46:46 IST 2013</date><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price>         <publish_date>2000-10-01</publish_date></part1></book></catalog>

今、日付の値を置き換えたいので、最初に文字列から日付を抽出し、新しい値を置き換えたいと思います。次のコードがあります。

  Date date=new Date()
  String str=result.substring(result.indexOf("<date>"));

日付タグから終了タグまでの文字列全体を表示します。日付タグを抽出して置き換える方法は?

4

4 に答える 4

1

これは、正規表現を使用してタグの内容を取得します...しかし、それを置き換えることについて-私はあなたに戻ってきます.

String result = "<?xml version=\"1.0\"?><catalog><book id=\"bk101\"><part1><date>Fri Apr 05 11:46:46 IST 2013</date><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price>         <publish_date>2000-10-01</publish_date></part1></book></catalog>";
String pattern = ".*(?i)(<date.*?>)(.+?)(</date>).*";
System.out.println(result.replaceAll(pattern, "$2"));

乾杯

于 2013-04-05T09:35:43.867 に答える
1

編集:ああ、あなたはJavaでそれを望んでいました。これはC#ソリューションです=)

タグを含む日付全体を置き換えることで、これを解決できます。

XML には 2 つの日付があるため、両方を置き換えないようにするには、次のようにします。

int index1 = result.IndexOf("<date>");
int index2 = result.IndexOf("</date>") - index1 + "</date>".Length;
var stringToReplace = result.Substring(index1, index2);

var newResult = result.Replace(stringToReplace, "<date>" + "The Date that you want to insert" + "</date>");
于 2013-04-05T09:36:47.447 に答える
1
String str=result.substring(result.indexOf("<date>") ,result.indexOf("</date>")+"</date>".length());

String#substring(int beginIndex)

この文字列の部分文字列である新しい文字列を返します。部分文字列は、指定されたインデックスの文字で始まり、この文字列の末尾まで拡張されます。

String#substring(int beginIndex,int endIndex)

この文字列の部分文字列である新しい文字列を返します。部分文字列は、指定された beginIndex で始まり、インデックス endIndex - 1 の文字まで拡張されます。したがって、部分文字列の長さは endIndex-beginIndex になります。

于 2013-04-05T09:24:57.847 に答える
0

ちょうど値:

String str = result.substring(result.indexOf("<date>") + "<date>".length(),
        result.indexOf("</date>"));

タグを含む:

String str = result.substring(result.indexOf("<date>"),
        result.indexOf("</date>") + "</date>".length());
于 2013-04-05T09:28:31.577 に答える