我使用class读取整个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>"));
显示从日期标记到结束标记的整个字符串。 如何提取日期标签并替换它?
答案 0 :(得分:1)
String str=result.substring(result.indexOf("<date>") ,result.indexOf("</date>")+"</date>".length());
String#substring(int beginIndex)
返回一个新字符串,该字符串是此字符串的子字符串。子串 从指定索引处的字符开始并扩展到 这个字符串的结尾。
String #substring(int beginIndex,int endIndex)
返回一个新字符串,该字符串是此字符串的子字符串。子串 从指定的beginIndex开始并延伸到at处的字符 index endIndex - 1.因此子字符串的长度是 endIndex的-的beginIndex。
答案 1 :(得分: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"));
干杯
答案 2 :(得分: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>");
答案 3 :(得分: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());