Разобрать XML с атрибутами и значениями атрибута в Java - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть ситуация для анализа XML, который имеет много данных в атрибутах и ​​уровнях для доступа к данным внутри иерархии XML.

Смущен тем, какой синтаксический анализатор будет использоваться для того, чтобы это было эффективным подходом для разбора. Разбор XML и как получить доступ к атрибутам и их значение.

Я предпочел парсер DOM и пытался его проанализировать, но это было немного сложно, так как мне нужно было получить тег -> затем атрибут -> затем значение attr, и при этом условии необходимо получить доступ к другому тегу.

 <testCodeIdentifier classCode="ROL" >
                <realmCode code="QD" />
                <id assigningAuthorityName="PRMKEY" extension="SJC16494"  />
                <statusCode code="active" /> 
                <playingTestCodeDetails classCode="ENT" determinerCode="INSTANCE" >
                  <realmCode code="QD" />
                  <id assigningAuthorityName="PRMORDCODE" extension="16494"  />
                  <id assigningAuthorityName="TESTNUMINBOOK" extension="16494"  />
                  <code code="16494" codeSystemName="QTIM" displayName="SureSwab Candidiasis" /> 
              <name  use=""></name>
                  <asSeeAlsoCode classCode="ROL" > 
                    <realmCode code="QD" />
                    <code code="7600" displayName="Sample See Also Name" ></code>
                  </asSeeAlsoCode>    
                  <asSeeAlsoCode classCode="ROL" >
                <realmCode code="QD" />
                <code code="6496" displayName="Sample See Also Name" ></code>
                  </asSeeAlsoCode>
                </playingTestCodeDetails>
    </testCodeIdentifier>

Выше приведен пример XML, в котором все атрибуты представлены в виде данных, которые мне нужны для их прохождения ... JAXB .. как мы можем его использовать ????

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Подход зависит от ваших потребностей.Если вы собираетесь использовать большинство значений в сложных бизнес-операциях.Вероятно, путь загрузки XML с помощью XStream или другого связующего фреймворка - это путь.Теперь, если вас интересует только пара значений, и вы ожидаете обрабатывать большие XML (или много маленьких).Вероятно, синтаксический разбор Sax может быть более подходящим.

Вот пример.

final SAXParserFactory factory = SAXParserFactory.newInstance();
final SAXParser saxParser = factory.newSAXParser();

final DefaultHandler handler = new DefaultHandler() {

    @Override
    public void startElement(final String uri, final String localName, final String qName,
             final Attributes attributes) throws SAXException {

         System.out.println("Start Element :" + qName);

         if ("realmCode".equals(qName)) {
             System.out.println(attributes.getValue("code"));
         }
    }

    @Override
    public void endElement(final String uri, final String localName, final String qName)
                    throws SAXException {
    }

    @Override
    public void characters(final char ch[], final int start, final int length) throws SAXException {
    }

  };


  saxParser.parse(myInputStreamOrFile, handler);
0 голосов
/ 13 декабря 2011

ЕСЛИ размер файла XML не будет огромным , вы можете посмотреть следующие параметры:

  1. JAXB (Если у вас есть определение схемы, оно сгенерирует объекты и автоматически заполнит их для вас).

  2. JiBX (Еще одна хорошая альтернатива. Вы можете определить пользовательское сопоставление атрибутов XML с объектами Java)

  3. XStream (также позволяет отображать атрибуты XML на объекты Java).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...