【发布时间】:2010-04-12 21:07:26
【问题描述】:
我正在使用 DocumentBuilder 来解析 XML 文件。但是,该项目的规范要求在文本节点中,像 &quot; 和 &lt; 这样的字符串按字面意思返回,并且不解码为字符(" 和 <)。 p>
之前的一个类似问题Read escaped quote as escaped quote from xml 收到了一个似乎特定于 Apache 的答案,而另一个似乎根本没有按照它所说的那样做。但是,我很想在这两个方面都被证明是错误的:)
供参考,这里有一些代码:
file = new File(fileName);
DocBderFac = DocumentBuilderFactory.newInstance();
DocBder = DocBderFac.newDocumentBuilder();
doc = DocBder.parse(file);
NodeList textElmntLst = doc.getElementsByTagName(text);
Element textElmnt = (Element) textElmntLst.item(0);
NodeList txts = textElmnt.getChildNodes();
String txt = ((Node) txts.item(0)).getNodeValue();
System.out.println(txt);
我希望 println() 产生类似
的东西"3>2"
而不是
"3>2"
这是目前正在发生的事情。 谢谢!
【问题讨论】:
-
你能在这里澄清你想要什么,你想打印转义版本,还是你希望它取决于它在 XML 中的呈现方式?
-
Yishai:任何一个都会有帮助,因为我认为文件中可能永远不会有文字引号、>s 等。但是,我不能确定,如果有的话,我想保留它们。
-
在 XML 中像 > 这样的不带引号的字符不是非法的吗?永远不会有文字 >.
-
@DJClayworth:不带引号的字符(如 >)在 CDATA 部分中是合法的。