【问题标题】:Android XML parsing issue using DOM parser使用 DOM 解析器的 Android XML 解析问题
【发布时间】:2012-03-23 17:58:43
【问题描述】:

我正在尝试在 Android 中使用 Dom 解析器解析以下内容。

<offerURL>
http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=553&BEFID=93767&aon=%5E1&MerchantID=434524&crawler_id=1909400&dealId=TCk4NTG97Aa3wSQgh2U3FQ%3D%3D&url=http%3A%2F%2Frover.ebay.com%2Frover%2F1%2F707-64686-24023-0%2F2%3Fipn%3Dpsmain%26icep_item_id%3D190622592957%26icep_vectorid%3D260601%26kwid%3D1%26mtid%3D637%26crlp%3D1_260601%26kw%3D%7Bquery%7D%26query%3D%7Bquery%7D%26linkin_id%3D%7Blinkin_id%7D%26sortbid%3D%7Bbidamount%7D%26fitem%3D190622592957%26mt_id%3D637&linkin_id=7000251&Issdt=120323134700&searchID=p2.77722a731149145f60fa&DealName=Samsung+B2100+Outdoor+In+Schwarz+%28black%29+Orig.+Neuware&dlprc=89.95&crn=&istrsmrc=1&isathrsl=0&AR=1&NG=3&NDP=6&PN=1&ST=7&DB=sdcprod&MT=phx-pkadu-intl-dc20&FPT=DSP&NDS=&NMS=&MRS=&PD=95929320&brnId=14863&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=7&RR=1&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=538&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=
</offerURL>

为了解析,我使用以下代码:

Node node = .....
String nodeName = node.getNodeName();
if (nodeName.equalsIgnoreCase("offerURL")) {
    String offerUrl = node.getFirstChild().getNodeValue()
    Log.d("offerUrl => " + offerUrl);
}

它工作正常,但&lt;offerURL&gt; 标签的值被截断。 log cat 中打印的变量 offerUrl 的值为“http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=553”

不确定到底是什么问题。请帮忙。

【问题讨论】:

    标签: android xml dom


    【解决方案1】:

    &amp;amp; 是 XML 中的预定义实体,必须以特殊方式表示。在 URL 中,如果您将所有 &amp;amp; 更改为 &amp;amp; 应该可以工作。

    Predefined entities in XML 会告诉你所有 XML 中的预定义实体以及如何表示它们。

    【讨论】:

    • 感谢 Neeta 的快速回复。我以前使用以下代码进行解析:document = documentBuilder.parse(inputStream); 然后,我将解析方法更改为:String responseString = convertStreamToString(responseStream); InputSource inputSource = new InputSource(new StringReader(responseString)); document = documentBuilder.parse(inputSource); 使用这种技术,&amp;amp; 被替换为 &amp;amp;,正如你所说。但我仍然遇到同样的问题。
    • 在 convertStreamToString 方法中我使用了以下语句:BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2013-07-18
    • 2013-01-22
    • 2013-12-24
    • 2012-07-03
    相关资源
    最近更新 更多