Android: получить XML из элемента SAX

Могу ли я получить строку XML из класса SAX Element в Android? Например, при разборе DOM в .NET мы можем получить OuterXml или InnerXml узла. Если я что-то не упускаю из виду, кажется, что нет никакого способа сделать это с помощью синтаксического анализа SAX или DOM в Android. Прав ли я в этом (надеюсь, что нет)?

Используя SAX, мы можем сделать что-то вроде:

Element childElt = rootElt.getChild(CHILD_ELT_NAME);
if(childElt != null) {
 childElt.setEndTextElementListener(new EndTextElementListener() {
  @Override
  public void end(String body) {
   //Do something with the body string
  }
 });
}

Это позволит нам получить «значение» дочернего элемента. Есть ли что-нибудь подобное, что позволит нам получить XML-представление элемента и его дочерних элементов?

Спасибо.


person mahdaeng    schedule 18.01.2011    source источник
comment
Возможно, попробуйте другие абстракции XML, кроме DOM; SAX ужасно неудобен для таких задач... это просто с DOM, и относительно проще (чем SAX) со встроенным парсером pull (или Stax)?   -  person StaxMan    schedule 19.01.2011
comment
DOM на самом деле лучше, чем SAX, но все же громоздкий...   -  person vtd-xml-author    schedule 19.01.2011


Ответы (2)


Если вы пытаетесь выполнять операции, чувствительные к древовидной структуре, вам следует использовать DOM. То, что вы, кажется, пытаетесь сделать, похоже, соответствует этому описанию, поэтому я предлагаю вам использовать парсер DOM.

Обсуждение SAX против Dom (Event vs. Tree) см.: http://www.saxproject.org/event.html

person Nick Campion    schedule 18.01.2011
comment
Обсуждение синтаксического анализа DOM в Java (Android) см. по адресу: download.oracle.com/docs/cd/B28359_01/appdev.111/b28394/ - person Nick Campion; 19.01.2011

С помощью VTD-XML вы можете получить индекс маркера и преобразовать его в строку для дальнейшей обработки, если простота что вы ищете.

person vtd-xml-author    schedule 18.01.2011