如何在java中使用Dom4j获取XML的节点内容
我有一个XML文件,如:如何在java中使用Dom4j获取XML的节点内容,java,xml,dom4j,Java,Xml,Dom4j,我有一个XML文件,如: <description> <text>blahblah</text> <code>code</code> <text>blah</text> </description> 我已经导航到节点description,我想阅读完整的内容,包括等等 我使用了getText(),但它返回了空字符串。 我使用了getStringValue(),但它过滤了所有 我使用了as
<description>
<text>blahblah</text>
<code>code</code>
<text>blah</text>
</description>
我已经导航到节点description
,我想阅读完整的内容,包括
等等
我使用了getText()
,但它返回了空字符串。我使用了
getStringValue()
,但它过滤了所有
我使用了
asXML()
,结果很接近,但结果包含我不想要的
是否有一种方法可以获取元素的XML内容?您应该了解如何使用XPath:您应该了解如何使用XPath:类似于以下内容:
public static void main(String[] args) throws DocumentException {
String xml = "<description><text>blahblah</text><code>code</code><text>blah</text></description>";
SAXReader reader = new SAXReader();
Document doc = reader.read(new StringReader(xml));
Element description = doc.getRootElement();
String content = getContent(description);
System.out.println(content);
}
private static String getContent(Element element) {
StringBuilder builder = new StringBuilder();
for (Iterator<Element> i = element.elementIterator(); i.hasNext();) {
Element e = i.next();
builder.append(e.asXML());
}
return builder.toString();
}
请注意,如果元素本身有文本内容,则不会返回文本内容,只返回子节点。类似以下内容:
public static void main(String[] args) throws DocumentException {
String xml = "<description><text>blahblah</text><code>code</code><text>blah</text></description>";
SAXReader reader = new SAXReader();
Document doc = reader.read(new StringReader(xml));
Element description = doc.getRootElement();
String content = getContent(description);
System.out.println(content);
}
private static String getContent(Element element) {
StringBuilder builder = new StringBuilder();
for (Iterator<Element> i = element.elementIterator(); i.hasNext();) {
Element e = i.next();
builder.append(e.asXML());
}
return builder.toString();
}
请注意,如果元素本身有文本内容,则不会返回文本内容,只返回子节点。假设
document
是org.dom4j.document
的实例,然后
String xPath = "description";
List<Node> nodes = document.selectNodes( xPath );
for (Node node : nodes) {
node.asXML()
}
stringxpath=“description”;
列表节点=document.selectNodes(xPath);
用于(节点:节点){
node.asXML()
}
假设文档是org.dom4j.document
的实例,然后
String xPath = "description";
List<Node> nodes = document.selectNodes( xPath );
for (Node node : nodes) {
node.asXML()
}
stringxpath=“description”;
列表节点=document.selectNodes(xPath);
用于(节点:节点){
node.asXML()
}
只想在qwerky接受的答案中添加以下内容:
还要能够解析纯文本元素的内容(即它不包含嵌套的xml):
我只想补充一下qwerky接受的答案:
还要能够解析纯文本元素的内容(即它不包含嵌套的xml):