помогите с парсингом xml используя php - PullRequest
0 голосов
/ 17 марта 2010

У меня есть следующий пример xml:

<entity id="1">
    <name>computer</name>
    <type>category</type>
    <entities>
        <entity id="2">
            <name>mac</name>
            <type>category</type>
        </entity>
        <entity id="3">
            <name>linux</name>
            <type>category</type>
            <entities>
                <entity id="4">
                    <name>ubuntu</name>
                    <type>category</type>
                </entity>
                <entity id="5">
                    <name>redhat</name>
                    <type>category</type>
                    <entities>
                        <entity id="6">
                            <name>server</name>
                            <type>category</type>
                        </entity>
                        <entity id="7">
                            <name>desktop</name>
                            <type>category</type>
                        </entity>
                    </entities>
                </entity>
            </entities>
        </entity>
    </entities>
</entity>

если у меня есть идентификатор, скажем, 5. Возможно ли получить следующее:

  • имя сущности с id = 5 (redhat)
  • ВСЕ дочерние объекты и их идентификатор и имя (6: сервер и 7: рабочий стол)
  • все родительские объекты и их идентификатор и имя (1: компьютер, 2: mac и 3: linux)

Я новичок при разборе xml. это выполняется только xpath или xquery / xpath?

Буду признателен, если кто-нибудь даст мне пример кода, чтобы сделать это с simplexml.

спасибо!

Ответы [ 2 ]

1 голос
/ 17 марта 2010
<?php
$simpleXml = simplexml_load_string($xml); // or load your file, whatever

if (($element = $simpleXml->xpath('//*[@id = 5]'))) {
    var_dump($element);
    echo 'Element and descendants: ', $element[0]->asXML(), PHP_EOL;
    echo 'Name of the entity: ', $element[0]->name, PHP_EOL;
}

SimpleXML предлагает действительно интуитивно понятную обработку XML, но она более ограничена, чем полные DOM классы.

1 голос
/ 17 марта 2010

вы можете использовать SimpleXML .

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