java - Android - Node.getNodeValue() 在存在 ' 时被截断

标签 java android xml dom

我正在使用 XPath 解析一些 XML。

XML 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <teldir>
    <contact>
      <nameDept>D&apos;ADAMO, Piergiorgio</nameDept>
    </contact>
  </teldir> 
</response>

使用表达式 /response/teldir/contact/nameDept/text(),我使用 Node.getNodeValue() 将结果放入 Java 字符串中。

此字符串显示在 ListView 中,对每个项目使用自定义但简单的布局。

<TextView 
    android:id="@+id/contact_name_dept" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:textSize="20sp"
    android:textColor="#FFFFFF"
/>

我有一个单元测试,断言字符串是“D'ADAMO,Piergiorgio”

问题是当代码在模拟器中运行时,ListView 中的项目显示“D'”

当出现撇号时,Node.getNodeValue() 似乎会截断字符串。

也许 Android 中的 Node DOM 实现有问题?

最佳答案

XPath 规范要求连接相邻的文本节点,因此使用/text() 永远不会给您半个文本节点。不幸的是,存在一些粗心的实现,如果它们在具有多个相邻文本节点的 DOM 上运行(当涉及实体时经常发生),它们就不会遇到合并它们的麻烦。这是一个不符合项,您应该提示它,但如果能修复它,您就很幸运了。同时,尝试改掉在 XPath 表达式中使用/text() 的习惯 - 这几乎总是不好的做法。相反,使用 string(/response/teldir/contact/nameDept) 获取包含元素的字符串值。任何 XPath 实现都不太可能出错(我希望如此!)。

关于java - Android - Node.getNodeValue() 在存在 ' 时被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421782/

相关文章:

使 imageView 圆形不起作用的 Android 代码

Android:无论屏幕类型如何,都将 TextView 保持在位图上的相同位置

java - Angular 2 - 按 ID 的 HTTP 删除方法不起作用

java - 非常简单的final修饰符和run方法问题

android listview 背景颜色保持灰色,在 Gingerbread 手机上无法更改

java - 从 JSON 或 XML 提要导入数据并在 Android 中创建列表

Android 无法解析 Material 组件

Android Hello World 不同于开发网站

java - TCP 套接字客户端将输出写入本地主机的速度很慢

java - NamedParameterJdbcDaoSupport 带有搜索表单 OR 条件实现