XMLReader() в PHP — разбор атрибутов в нескольких элементах с одинаковым именем

Я использую XMLReader для анализа XML, но я столкнулся с ситуацией, когда два элемента имеют одно и то же имя, и не знаю, как с этим справиться.

рассматриваемые элементы

<field name="latitude" value="51.4070767"/>
<field name="longitude" value="-0.6366062"/>

Я хочу вывести два поля значений в отдельные строки.

Я могу вытащить первый, используя этот метод

$bp = $product->fields->field["value"]; ###gives 51.4070767

но как мне получить доступ ко второму? (-0,6366062)

Ваше здоровье


person Franco    schedule 12.04.2011    source источник
comment
Является ли тег, содержащий теги ‹field›, ‹fields›? Я мало что знаю о читателе XML. Может быть, есть способ разделить все эти поля на массив.   -  person David    schedule 12.04.2011
comment
да, исходный тег '‹fields› ‹имя поля=значение широты=51,4070767/› ‹имя поля=значение долготы=-0,6366062/› ‹/fields›'   -  person Franco    schedule 12.04.2011


Ответы (2)


Вам нужно сделать field массивом, чтобы вы могли сделать:

$product->fields->field[0]["value"];
$product->fields->field[1]["value"];
person cweiske    schedule 12.04.2011

Это всего лишь одна идея... Вы можете найти узел по атрибуту (getAttribute), а затем выбрать узел с помощью moveToElement.

Но лучший вариант — использовать simpleXML, где вы можете использовать XPath, чтобы найти то, что вам нужно.

person GodFather    schedule 12.04.2011