Как разобрать XML с одинаковыми именами тегов? - PullRequest
0 голосов
/ 01 декабря 2011

Я знаю, как анализировать XML с помощью SAX-парсера. Мой XML такой:

-<address_component>
   <long_name>Chambers St</long_name>
   <short_name>Chambers St</short_name>
   <type>route</type>
</address_component>
-<address_component> 
   <long_name>Downtown</long_name>
   <short_name>Downtown</short_name>
   <type>neighborhood</type>
   <type>political</type>
</address_component>

Моя проблема: когда в XML есть два тега с одинаковыми именами, например, в данном случае «type», мой код получает только значение последнего тега. В этом случае «type» становится «политическим» и пропускает «соседство».

Как мне с этим справиться?

Ответы [ 3 ]

2 голосов
/ 01 декабря 2011

Похоже, ваш код не предназначен для обработки нескольких элементов type, поэтому он сохраняет только последний найденный элемент.Это ограничение вашего кода (который вы не показали).Вам нужно переписать код, чтобы он принимал несколько type элементов, например, сохраняя все type, встречающиеся в массиве String[] вместо одной переменной String.

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

Учитывая, что вы действительно используете синтаксический анализатор SAX, ваши обратные вызовы (startElement / endElement и т. Д.) Должны запускаться для обоих элементов 'type'.Возможно, если бы вы могли опубликовать некоторый код, проблема стала бы более очевидной.

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

XPath возможно (не уверен). Проверьте это (это для python, но достаточно универсально): Как заставить XPath выбирать несколько элементов таблицы с одинаковыми атрибутами id?

...