我使用xpath来获取NodeList。然后我使用这段代码来获得字符串表示,但它也有父节点。
StringWriter sw = new StringWriter();
try {
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
t.transform(new DOMSource(node), new StreamResult(sw));
} catch (TransformerException e) {
e.printStackTrace();
}
return sw.toString();
我怎么能只得到自己或后代作为字符串?或者从父命名空间中窃取命名空间声明?
您没有显示如何选择节点集中的节点。很可能它们是元素,这就是问题的原因。
解决方案很简单:
构造并使用一个XPath表达式,该表达式只选择所需的文本节点。
例如,不用:
/x/y/z
使用/x/y/z/text()
最后一个表达式选择任何文本节点,该节点是名称为z
的元素的子节点,该元素是名称为y
的元素的子节点,该元素是名称为x
的顶部元素的子元素。
:
OP已在评论中澄清:
这可以在XSLT中完成,使用"谢谢,我试过了,但它只给出了我在节点的真实文本。我想要的对象中所有内容(节点和文本)的字符串表示节点,不包含父节点的信息。如果我能有一个XML文件,然后用文本编辑器打开它,然后复制一些子树。你知道我在说什么吗?"
<xsl:copy-of select="yourExpression/node()"/>
或者,如果您的XML API允许,对于每个选定的节点使用:
theSelectedNode.InnerXml