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'ADAMO, Piergiorgio</nameDept> </contact> </teldir> </response&
XPath
解析一些XML
XML代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<teldir>
<contact>
<nameDept>D'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"
/>