2010-01-25 50 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

相關問題