我正在使用 XPath
解析一些 XML。
XML 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<teldir>
<contact>
<nameDept>D'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/