我使用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();
我怎样才能将自我或者后裔作为字符串?也许从父母那里窃取命名空间声明?
答案 0 :(得分:1)
您没有显示如何选择节点集中的节点。很可能它们是元素,这是导致问题的原因。
解决方案很简单:
构造并使用仅选择所需文本节点的XPath表达式。
例如,而不是:
/x/y/z
使用强>
/x/y/z/text()
最后一个表达式选择任何文本节点,该节点是名为z
的任何元素的子元素,该元素是名为y
的任何元素的子元素,该元素是top元素的子元素,名为{{1} }。
<强>更新强>:
OP已在评论中澄清:
“谢谢,我试过这个,但它只在节点中提供我的真实文本。我想要 当前的所有内容(节点和文本)的字符串重新表示 节点,没有父节点的信息。如果我愿意的话 有一个xml文件,并用文本编辑器打开它,然后复制出一些 子树。你知道我在说什么吗?“
这可以在XSLT中使用
完成x
或者,如果您的XML API允许,则对于每个选定的节点使用:
<xsl:copy-of select="yourExpression/node()"/>