невозможно прочитать «/» на устройстве

1

Я обрабатываю 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-символ там, прежде чем передать его.

  • 1
    Это звучит как интересная проблема; Можете ли вы опубликовать код, который вы написали, который извлекает только «М»?
  • 0
    @mfrankli: пожалуйста, смотрите редактирование.
Показать ещё 5 комментариев
Теги:
xpath

2 ответа

0
Лучший ответ

Вот как выглядит новый метод:

public static String getCharacterDataFromElement(Element e) {
    return e.getTextContent();
  }

На данный момент это работает. Я не знаю, как долго, но надеюсь, до тех пор, пока я не решит сделать правильные вещи и не перейду через дочерние узлы и не объединить строковые значения.

1

Если мы говорим о текстовом узле, вы пробовали 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

  • 0
    Да. Я попробовал это. Тот же результат. Bcz of / знак, что узел имеет 3 детей. Я должен сбежать от / персонажа, я думаю
  • 0
    e.getTextContent (); это то, что дает мне правильные данные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню