Разбор XML с PHP - PullRequest
       17

Разбор XML с PHP

1 голос
/ 09 июня 2011

Мне обычно не нужно ничего делать с бэкэндом, но для этого одного проекта мне нужно проанализировать XML с помощью PHP, так что это все новое и очень сложное для меня.Мне нужно отобразить четвертый тег на странице, и я решил использовать getElementsByTagName, но проблема в том, что три предыдущих тега одинаковы, поэтому выглядит примерно так:

<Person fname="John" lname="Smith"/> 
<Person fname="Frank" lname="Jones"/> 
<Person fname="Mike" lname="Jackson"/> 
<Person fname="Jack" lname="Williams"/> 
<value no="50"/> 
<value no="60"/> 
<value no="70"/> 

Вот что я хотел быхотел бы вывести на мою HTML-страницу, используя первый атрибут в четвертом теге и атрибут во втором теге:

Mike: 60

В принципе, есть ли способ запросить значение атрибута в четвертом тегенезависимо от того, что это за тег или что идет до или после него?

Любая помощь будет признательна - спасибо!

Редактировать - я не писал XML, я запрашиваю с удаленного сервера.

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Ну, я бы предложил вам реорганизовать вашу "схему". Потому что для меня это довольно странно связывать значения тегов по порядку, как вы.

почему бы и нет

<Person fname="Mike" lname="Jackson" value="60"/>

или

<Person fname="Mike" lname="Jackson">
<value no="60"/> 
</Person>

вместо

На самом деле способ применения этих тегов не кажется полезным или, возможно, даже не правильным XML. B / C, что вы пытаетесь разобрать, это не xml-dom-tree, а просто список. так почему бы не написать список-парсер самостоятельно?

И если вы хотите использовать DOM-расширение и getElementsByTagName (), то в соответствии с руководством вы получите DOMNodeList-объект, который позволяет ссылаться на результирующие узлы по индексу!?

2 голосов
/ 09 июня 2011

Мои заметки о XML:

Ссылки: http://php.net/simplexml.examples-basic

И пример:

$xml='<p4wappremium>
    <servermessage>
        <providerref sid="123"/>
        <useractioninfo
            msisdn="48790300200"
            tid="12123123"
            stid="123123"
            pid="345345"
            bid="1"
          />
    </servermessage>
</p4wappremium>';

$xml = simplexml_load_string($xml);

foreach ($xml->providerref[0]->attributes() as $name -> $value) {
    ${$name}=$value;
}

foreach ($xml->useractioninfo[0]->attributes() as $name -> $value) {
    ${$name}=$value;
}

Надеюсь, это будет полезно для вашего случая.

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