无法读取设备上的“/”
问题描述:
我正在处理一个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()
返回中号
一些调试后:
当我看到这个元件在监视窗口,F或其他名称只有一个孩子。但是,对于包含/它有3个孩子的元素。它切割它看到/在那里的stringbuffer bcz。我想或者我必须改变下面的功能,并准备好所有的孩子节点,或者我必须在那里使用转义字符,然后再传递它。
答
这是什么新的方法现在看起来像:
public static String getCharacterDataFromElement(Element e) {
return e.getTextContent();
}
截至目前,这是工作。我不知道多久,但希望,直到我决定做正确的事情,并迭代子节点和连接字符串值。
答
如果我们正在谈论一个文本节点,你试过Node
的getNodeValue()
?
public static String getCharacterDataFromElement(Element e)
{
Node child = e.getFirstChild();
return child.getNodeValue();
}
文档:http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Node.html#getNodeValue%28%29
这听起来像一个有趣的问题;你能发布你写的只提取“M”的代码吗? – mfrankli 2012-03-16 03:58:44
@mfrankli:请参阅编辑。 – Asdfg 2012-03-16 04:04:23
问题是,正如你猜测的那样,'/'是一个特殊字符。 /指的是'/'的ascii值47。这里的转折点在于它在仿真器上工作,但不在设备上,这是令人惊讶的,我没有很好的答案。至于简单的工作,你可以尝试将'child'转换成CDataSection(http://developer.android.com/reference/org/w3c/dom/CDATASection.html)而不是CharacterData – mfrankli 2012-03-16 04:24:34