在同一xml标记中使用text和xml标记解析xml

时间:2013-04-19 10:38:53

标签: java xml xml-parsing

我不想使用看起来像这样的java来解析xml:

<sentence>This is a <a><b>long</b></a> sentence.</sentence>
<sentence>This is a second <a><b>even</b></a> longer sentence.</sentence>

结果我需要没有xml的整个句子。我试图用dom4j解析这个。调用函数element.getText()(当前元素是句子标记)我只是在嵌套的xml标签中得到没有文本的句子。

感谢您的帮助! 此致

2 个答案:

答案 0 :(得分:0)

将数据保存在xml标记的[CDATA]部分中

<sentence><![CDATA[This is a <a><b>long</b></a> sentence.]]></sentence>

答案 1 :(得分:0)

您可以使用XPath选择所有文本节点

String getAllTextContent(Node node) {
  List<Node> nodes = node.selectNodes("descendant-or-self::text()");
  StringBuilder buf = new StringBuilder();
  for ( Node n : nodes ) {
    buf.append(n.getText());
  }
  return buf.toString();
}
// usage
System.out.println(getAllTextContent(doc.selectSingleNode("//sentence")));