Java Android-Node.getNodeValue()在存在&;时截断;载脂蛋白;

Java Android-Node.getNodeValue()在存在&;时截断;载脂蛋白;,java,android,xml,dom,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&

我正在用
XPath
解析一些XML

XML代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <teldir>
    <contact>
      <nameDept>D&apos;ADAMO, Piergiorgio</nameDept>
    </contact>
  </teldir> 
</response>
我有一个单元测试断言字符串是
“D'ADAMO,Piergiorgio”

问题是,只有当代码在模拟器中运行时,
列表视图中的项才会显示
“D'

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


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

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

您不应该逃避文本。。。在将字符串分配给textview之前,请尝试记录该字符串,以确保它确实包含您认为它包含的内容。@Yoni非常好的提示!似乎只有当代码在仿真器内运行时(单元测试正常)
Node.getNodeValue()
才会在撇号后截断。Android DOM实现出现问题?可能。我认为大部分Android开发工作都与XML解析相关,并将其转换为XmlPullParser;DOM/XPath在移动设备上运行速度非常慢;虽然大多数事情都按照您在普通JVM中期望的方式工作,但我不会把我的发行版押在它身上。非常好的答案!如果我能给你+100,我就给你!使用
string()
解决了我的问题!
<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"
/>