Чтение и анализ произвольной структуры XML в Java? - PullRequest
0 голосов
/ 10 февраля 2012

Новое в разборе XML. Мне нужно прочитать группу произвольных файлов XML.Все они должны быть POX, как в следующем формате:

<someThing>
  <property1>blah blah blah</property1>
  <property2>blah blah blah</property2>
</someThing>

или в следующем:

<thingList>
  <items>
    <otherThing>
      <prop3>blah blah blah</prop3>
      <prop4>blah blah blah</prop4>
    </otherThing>
    <otherThing>
      <prop3>blah blah blah</prop3>
      <prop4>blah blah blah</prop4>
    </otherThing>
  </items>
</thingList>

Так что я не буду заранее знать название элементов.У меня вопрос: есть ли библиотека Java, которая обрабатывает чтение в XML не по имени узла или атрибуту узла, а по структуре?

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Вы можете использовать getChildNodes(), чтобы получить полный список узлов, вызывать это рекурсивно в методе, подобном visitNode().Этот API доступен в пакете org.w3c.dom.

Сначала вы вызываете getChildNodes() в корневом узле документа с помощью метода visitNode(), о котором я говорил, а затем в visitNode() вы снова вызываете visitNode() на каждом из дочерних узлов в текущем узле.

Вы можете проверить тип по getNodeType(), и, если это Node.TEXT_NODE, получить доступ к getNodeValue(), чтобы получить значение этого тега.

1 голос
/ 10 февраля 2012

Используя метод getRootElement, вы можете получить корневой элемент XML-файла.После получения корневого элемента вы должны указать путь XML, который вы хотите получить.Я написал для "items / otherThing / prop3", используя это, вы получите значение тега prop3.

File fXmlFile = new File("test.xml");
     SAXBuilder builder = new SAXBuilder();
     Document document = builder.build(fXmlFile);
     Element beans = document.getRootElement();

     Element dbUrlElementHost = (Element) XPath.selectSingleNode(beans,"items/otherThing/prop3");
     dbUrlElementUsername.getValue()+"";
0 голосов
/ 10 февраля 2012

Я думаю, DOM - лучший вариант, если вы хотите пойти по Node.Вы можете перебирать каждый узел и его список дочерних узлов.Вот хороший пример , чтобы получить представление.

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