我正在使用以下方法通过网络从XML文档中读取一行文本:
public static String getCharacterDataFromElement(Element e) {
Node child = ((Node) e).getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "";
}
它工作正常,但是如果它遇到一个字符,如&符号,它不像&
那样写,那么它将完全忽略该字符和行的其余部分。我该怎么做才能纠正这个问题?
答案 0 :(得分:3)
唯一正确的解决方案是更正XML,以便将&
写为&
,或将文本包含在<![CDATA[
... ]]>
中。
除非您使用&符号或使用CDATA,否则它实际上不是XML。
答案 1 :(得分:0)
我怀疑输入不正确的说法是红鲱鱼。如果源文档包含实体引用,则元素可能包含多个文本节点子节点,并且您的代码仅读取其中的第一个子节点。它需要全部阅读。
(我认为在DOM中获取Node的文本内容有更简单的方法。但是我不确定,如果我能避免它,我从不使用DOM,因为它会让一切变得如此困难。你会好多了用JDOM或XOM关闭。)