【发布时间】:2015-08-14 10:06:35
【问题描述】:
我需要解析一个xml内容,需要在里面找到一个内部标签
<p><span>test</span></p> <p><span>test12</span></p> <p>Some text<p><span>test</span></p></p>
在我上面的测试中,最后一个 p 标签里面有内部 p 标签。我需要找到 p 标签的内部 p 标签。我尝试如下
public static void main(String[] args) {
String text= "<p><span>test</span></p> <p><span>test12</span></p> <p>Some text<p><span>test</span></p></p>";
Pattern pattern = Pattern.compile("<p>.*?</p>");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String match = matcher.group();
//System.out.println("matcher group:"+match);
if (match.lastIndexOf("<p>") > 0) {
//System.out.println("Substring:"+match.substring(match.indexOf("<p>") + "<p>".length(), match.indexOf("</p>")));
text = text.replace(match, "<p>" +match.substring(match.indexOf("<p>") + "<p>".length(), match.indexOf("</p>")).replaceAll("<p>", ""));
}
}
System.out.println("text:"+text);
}
如果有什么简单的方法可以告诉我。
【问题讨论】:
-
不要使用正则表达式。使用专门用于 XML 解析的库。
-
已经多次指出(例如:stackoverflow.com/a/1732454/982542),你不能用正则表达式真正解析
xml/html。而是使用适当的解析器(此处为 Oracle 官方指南:docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm)。 -
@AndyTurner html != xml。不能保证 OP 的 html 是有效的 xml(即使 can 是)。 OP 应该使用 html 解析器
-
@ArnaudDenoyelle 确实如此。 OP 说“我需要解析一个 xml 内容”。
-
也许看看 XPath(例如stackoverflow.com/questions/340787/…)。
标签: java string xml-parsing