我正在使用DocumentBuilder来解析XML文件。但是,项目规范要求在文本节点中,字面上返回"
和<
等字符串,不解码为字符("
和{ {1}})。
之前的类似问题Read escaped quote as escaped quote from xml收到了一个似乎特定于Apache的答案,而另一个似乎并没有按照它所说的那样做。无论如何,我都喜欢被证明是错的:)
供参考,以下是一些代码:
<
我希望println()产生类似
的东西 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);
而不是
"3>2"
这是目前发生的事情。 谢谢!
答案 0 :(得分:3)
答案 1 :(得分:2)
我正在使用DocumentBuilder来解析XML文件。但是,项目规范要求在文本节点内,字面上返回
"
和<
等字符串,而不是解码为字符(“和&lt;)。
要求不好。不要那样做。
或至少仔细考虑您认为自己想要或需要它的原因。
CDATA部分和转义是一种允许您传递引号和'&lt;'等文字的策略通过XML而没有XML的字符将它们与标记混淆。它们本身没有意义,当你将它们从XML中删除时,你应该接受它们作为引号和'&lt;'他们打算代表的人物。
答案 2 :(得分:1)
一种方法可能是尝试dom4j,并使用Node.asXML()方法。它可能会返回一个深层结构,因此可能需要克隆才能获得所需的节点或文本,而不需要任何子节点。
答案 3 :(得分:-3)
这两个很好的答案,但对于这个非常小规模的应用来说,这两者都有点太重了。我最终还是完全剥离了所有&amp; s(我这样做以及以后无法逃脱的部分)。这很难看,但它正在发挥作用。
编辑:我知道这有各种各样的错误,而且要求是愚蠢的。这是一个学校项目,重要的是它在一个案例中工作,并且要求不是我的错:)