Я обрабатываю 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
После некоторых более отладок:
Когда я вижу элемент в окне просмотра, F или другие имена, у него есть только один ребенок. Но для элемента, который содержит/он получил 3 ребенка. Он разрезает stringbuffer bcz, который он видит/находится там. Я предполагаю, что либо я должен изменить нижеприведенную функцию и подготовить все дочерние узлы, либо я должен использовать escape-символ там, прежде чем передать его.
Это звучит как интересная проблема; можете ли вы опубликовать код, который вы написали, который извлекает только «M»? – mfrankli
@mfrankli: см. Редактирование. – Asdfg
проблема, как вы уже догадались, состоит в том, что символ '/' является специальным символом. / ссылается на значение ascii 47 '/'. Твист здесь заключается в том, что он работает на эмуляторе, но не на устройстве, что удивительно, и у меня нет хорошего ответа для этого. Чтобы просто заставить его работать, вы могли бы попробовать лить «ребенка» в CDataSection (http://developer.android.com/reference/org/w3c/dom/CDATASection.html), а не в CharacterData – mfrankli