无法在设备上阅读“/”

时间:2012-03-16 03:45:24

标签: java android xml xpath

我正在处理一个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切片。我想要么我必须更改下面的函数并准备好所有子节点,或者我必须在那里使用转义字符才能传递它。

2 个答案:

答案 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();
  }

截至目前,这是有效的。我不知道多长时间,但希望直到我决定做正确的事情并迭代子节点并连接字符串值。