CharacterData忽略非转义字符

时间:2011-06-16 11:05:58

标签: java xml

我正在使用以下方法通过网络从XML文档中读取一行文本:

public static String getCharacterDataFromElement(Element e) {
    Node child = ((Node) e).getFirstChild();
    if (child instanceof CharacterData) {
        CharacterData cd = (CharacterData) child;
        return cd.getData();
    }
    return "";
}

它工作正常,但是如果它遇到一个字符,如&符号,它不像&那样写,那么它将完全忽略该字符和行的其余部分。我该怎么做才能纠正这个问题?

2 个答案:

答案 0 :(得分:3)

唯一正确的解决方案是更正XML,以便将&写为&amp;,或将文本包含在<![CDATA[ ... ]]>中。

除非您使用&符号或使用CDATA,否则它实际上不是XML。

答案 1 :(得分:0)

我怀疑输入不正确的说法是红鲱鱼。如果源文档包含实体引用,则元素可能包含多个文本节点子节点,并且您的代码仅读取其中的第一个子节点。它需要全部阅读。

(我认为在DOM中获取Node的文本内容有更简单的方法。但是我不确定,如果我能避免它,我从不使用DOM,因为它会让一切变得如此困难。你会好多了用JDOM或XOM关闭。)

相关问题