-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 str=result.substring(result.indexOf("<date>") ,result.indexOf("</date>")+"</date>".length());

字符串#substring(int beginIndex)

返回一个新字符串,它是该字符串的子字符串。子字符串以指定索引处的字符开始并延伸到该字符串的末尾。

String#substring(int beginIndex,int endIndex)

返回一个新字符串,它是该字符串的子字符串。子字符串从指定的 beginIndex 开始并延伸到索引 endIndex - 1 处的字符。因此子字符串的长度是 endIndex-beginIndex。

于 2013-04-05T09:24:57.847 回答
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 中有两个日期,因此为了确保不会同时替换它们,您可以这样做。

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 回答
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 回答