Я обрабатываю XML-документ и читаю его значение. Одно из значений, которое я читаю, имеет/в нем. Так выглядит значение: M/S John Smith At 4
. Я тестировал эмулятор и показывал правильное значение. Теперь я развернул приложение на своем устройстве Samsung Galaxy S2 device
и процесс не корректно считывает значение. Он просто показывает M в поле значений для этого имени.
Я думаю, это может быть потому, что/является особым персонажем. Есть ли что-то, что я могу сделать, чтобы избежать специального символа в значении и прочитать все это имя?
PS: Я не опытный 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 "";
}
В функции cd.getdata()
возвращает M
После некоторой дополнительной отладки:
Когда я вижу элемент в окне часов, для других имен у него есть только один ребенок. Но для элемента, который содержит/он получил 3 ребенка. Он разрезает stringbuffer bcz, который он видит/находится там. Я предполагаю, что либо я должен изменить нижеприведенную функцию и подготовить все дочерние узлы, либо я должен использовать escape-символ там, прежде чем передать его.
Вот как выглядит новый метод:
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