2010-01-25 51 views
1

我有我解析XML文件,我有以下代码...为什么连字符被解释为孩子文本节点上

<desc> 
/wap/news/text.jsp?sid=242&nid=5662369&cid=5038&scid=-1 
</desc> 

我没有在这个XML的格式控制文件,但我需要将desc内容解释为部分url,我将稍后添加到基本URL并检索新文件。

当我分析这个说明标签有一个孩子,用的值的文本节点...

/wap/news/text.jsp?sid=242 

但行的其余部分被解析为6个节点上面的文字节点上值...

& 
nid=5662369 
& 
cid=5038 
& 
scid=-1 

如何让解析器将此视为只是一个单一的文本节点,而不是解释“&”符号子节点。

相关的解析代码如下。

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

更正:该行的其余部分没有被解释为属性,但作为子节点。 – 2010-01-25 04:14:33

回答

3

&是XML中的一个特殊字符。它需要被转义为&amp;

如果有东西正在生成上述文本文件,那么它不会生成有效的XML。

+1

有时有时候我们被困在处理我们手边的事情。 – whatnick 2010-01-25 03:45:14

+3

让我猜测 - 有人决定手工拼凑这个psuedo-XML,而不是使用合适的XML库吗?现在你必须忍受这些结果?无论如何,如果您确实需要使用XML解析器来解析非XML,则可以在将其提供给解析器之前用'&'替换相关的'&'。 – 2010-01-25 03:47:28

+0

@whatnick - 希望XML解析器对无效XML做一些明智的事情类似于期望Java编译器用C来做一些明智的事情。 – 2010-01-25 04:25:36

相关问题