android - 从 SOAP 响应获取 "&lt;"而不是 "<"在一台设备上中断,但在另一台设备上中断

标签 android xml parsing dom ascii

我正在发送一个返回一些 xml 的 SOAP POST。我一直在较新的设备(Android 4.1 的 Galaxy Nexus)上进行测试,并且运行良好。但是,我只是尝试在旧设备(运行 Android 2.2 的 HTC Desire HD)上运行它,我得到了一个 ParseException: At line 1, column 0: unclosed token .相关代码如下:

String xml = null;
Document doc = null;
String SOAPRequest = "[SOAP REQUEST HERE]";          

HttpPost httppost = new HttpPost("[WEBSITE HERE]");
InputStream soapResponse = null;
try {
    StringEntity postEntity = new StringEntity(SOAPRequest, HTTP.UTF_8);
    postEntity.setContentType("text/xml");
    httppost.setHeader("Content-Type", "application/soap+xml;charset=UTF-8");
    httppost.setEntity(postEntity);

    HttpClient httpclient = new DefaultHttpClient();
    BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httppost);

    // Convert HttpResponse to InputStream
    HttpEntity responseEntity = httpResponse.getEntity();
    soapResponse = responseEntity.getContent();
    //// printing response here gives me ...<Result>&lt;blahblahblah&gt;<Result>...

    // Get the SearchResult xml
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = factory.newDocumentBuilder();
    doc = db.parse(soapResponse);

} catch ...

NodeList soapNodeList = doc.getElementsByTagName("Result");
xml = soapNodeList.item(0).getFirstChild().getNodeValue();

//// printing xml here gives me "<" 
return xml;

看一下 httpResponse,我感兴趣的部分如下所示:<Result>&lt;blahblahblah&gt;</Result> .

当我尝试获取此 xml 时使用 NodeList , &lt;blahblahblah&gl;变成字符 < .

为什么会出现这个问题,我该如何解决?

最佳答案

这可能是相关的:

android DOM parsing with entities in tags

...这导致了这个:

http://code.google.com/p/android/issues/detail?id=2607

...这似乎表明在早期的 Android 版本中,DOM 解析器没有正确处理实体引用。那里的错误报告讨论了有关如何将实体视为单独的子节点而不是合并到听起来很像您的情况的相邻文本节点的内容。

如果这是您遇到的问题,请尝试切换到使用 SAX 解析器。它(恕我直言)也是一个更容易处理的 XML 解析器。

关于android - 从 SOAP 响应获取 "&lt;"而不是 "<"在一台设备上中断,但在另一台设备上中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12519843/

相关文章:

android - 当新消息到达时将项目移至 ListView 顶部

xml - 如何使用 powershell 更新 [xml] 属性中的字符串?

javascript - 从 Nodejs JSON 数组获取 2 个值

ruby - I18n::InvalidLocaleData:I18n gem 在 js 导出中有问题

带有解析/匹配示例的 C++ BNF 语法

java - 如何更改默认 editText Android Studio 的着色方面

android - android 中对话框中 ListView 的高度未根据 ListView 中的项目数设置;当选项数量较少时会出现空白

Android:onScrollStateChanged SCROLL_STATE_IDLE 有时不会触发

java - Apache Camel : Access original data (XML) returned from WebService

javascript - 如何在 JavaScript 中解析 XML