我有一个我正在解析的xml文件,我有以下标记......
<desc>
/wap/news/text.jsp?sid=242&nid=5662369&cid=5038&scid=-1
</desc>
我无法控制此xml文件的格式,但我需要将desc内容解释为部分网址,稍后我会将其附加到基本网址并检索新文件。
当我解析这个时,desc标签有一个子节点,一个值为...的文本节点
/wap/news/text.jsp?sid=242
但该行的其余部分在上述文本节点上被解析为6个子节点,其值为...
&
nid=5662369
&
cid=5038
&
scid=-1
如何让解析器将其视为单个文本节点而不是解释'&amp;'符号作为子节点。
相关的解析代码如下。
HttpConnection c = (HttpConnection) Connector.open(inURL.toString(), Connector.READ);
is = c.openInputStream();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
factory.setAllowUndefinedNamespaces(true);
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(is);
这是黑莓上的J2ME代码,所以我对可用的API非常有限。
答案 0 :(得分:3)
&
是XML中的特殊字符。它需要以&
转义。
如果有什么东西产生了上面的文本文件,那么它就不会产生有效的XML。
答案 1 :(得分:0)
首先,您的原始XML代码不是有效的XML,这是导致您失败的一个原因。其次,Java默认不会合并碎片文本内容。我写了一篇关于此细节的博客文章,以及如何通过在解析工厂上设置属性来合并不同的文本节点:
http://www.drillio.com/en/software-development/java/fragmented-xml-text-nodes/