我正在处理一个xml文档并从中读取值。正在阅读的价值之一。这是值的样子:M/S John Smith At 4
。我在模拟器上做了一些测试,它显示了正确的值。现在我将我的应用程序部署到我的Samsung Galaxy S2 device
,并且该过程没有正确读取值。它只是在该名称的值字段中显示M.
我想这可能是因为/是一个特殊的角色。有什么我可以做的事情来逃避值中的特殊字符并读取整个名称吗?
P.S。:我不是一位经验丰富的Java开发人员,所以这个问题对你来说可能听起来很愚蠢,但如果你有解决方案,请告诉我。
当我在控制台窗口中打印值时,解析它后它在xmlDocument中的读取方式为:M/S John Smith At 4
此函数读取值:
public static String getCharacterDataFromElement(Element e) {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "";
}
在adove函数中,cd.getdata()
返回M
经过多次调试后:
当我在观察窗口中看到元素时,对于其他名称,它只有一个孩子。但对于包含/它有三个孩子的元素。它将它看到/在那里的stringbuffer bcz切片。我想要么我必须更改下面的函数并准备好所有子节点,或者我必须在那里使用转义字符才能传递它。
答案 0 :(得分:1)
如果我们在谈论文字节点,您是否尝试过Node
的{{1}}?
getNodeValue()
文档:http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Node.html#getNodeValue%28%29
答案 1 :(得分:0)
这就是新方法现在的样子:
public static String getCharacterDataFromElement(Element e) {
return e.getTextContent();
}
截至目前,这是有效的。我不知道多长时间,但希望直到我决定做正确的事情并迭代子节点并连接字符串值。