помогите с классом DOMDocument в php - PullRequest
0 голосов
/ 14 марта 2010

вот мой XML DOM.

        <entities>
            <entity id="7006276">
                <title>xxx</title>
                <entities>
                    <entity id="7877579">
                       <title>xxx</title>
                       <entities>

Я хочу получить «сущность» с идентификатором 7006276, чтобы я мог получить доступ к ее дочерним «сущностям», чтобы создать для нее некоторые элементы «сущности».

я пробовал:

 $this->xmlDocument = new DOMDocument();
 // some code creating the above elements (you dont have to care about this comment code...it just creates the above xml structure
 // $this->xmlDocument->createElement('entity');
 // $sourceEntityElement->appendChild($newEntityElement);
 // and so on...

 // now i want to get the entities mentioned...
 $xmlEntities = $this->xmlDocument->getElementById('7006276')->entities;

но это не похоже на работу. Любая идея, как я могу получить это, чтобы я мог создать больше элементов «сущности»?

Ответы [ 2 ]

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

Вы можете использовать xpath для выбора элементов по атрибуту. Вам нужно будет преобразовать его в simplexml и проверить, чтобы он загружался правильно.

Не запускался, но вот основная концепция:

$sxe = simplexml_import_dom($this->xmlDocument);

$data = $sxe->xpath('//entity[@id="700627"]');

    foreach ($data as $value)
    {
           $value->addChild('entity');
    }
1 голос
/ 14 марта 2010

Сейчас PHP не знает, какой атрибут искать при вызове DOMDocument::getElementById. В соответствии с документацией для getElementById вам нужно либо установить сообщить PHP о своем атрибуте id с помощью DOMElement::setIdAttribute, либо проверить документ по DTD с помощью DOMDocument::validate.

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