PHP DOMDocument XML - PullRequest
       13

PHP DOMDocument XML

0 голосов
/ 04 октября 2018

У меня есть переменная php, такая как:

<div class="classA">
    <a id="someID1"></a>
    <div class="class1">
    <div class="class2">
        <div class="class3">
            <div class="class4">
                <h4>name, name<small>string</small></h4>
            </div>
            <div>
                <h4>number<small>string</small></h4>
            </div>
        </div>
    </div>
</div>
</div>
<div class="classA">
    <a id="someID2"></a>
    <div class="class1">
        <div class="class2">
            <div class="class3">
                <div class="class4">
                    <h4>nameA,nameA<small>stringA</small></h4>
                </div>
                <div>
                    <h4>numberA<small>stringB</small></h4>
                </div>
            </div>
        </div>
    </div>
</div>

Теперь я хочу получить данные из h4, который находится в классе A с таким именем, именем / номером / stringA / stringB или чем-то в этом роде.Как мне сделать это с помощью DOMDocument?

Я понятия не имею, как это сделать, потому что единственное различие между этими двумя классами - это тег a.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Если вы хотите получить доступ к div с помощью DOM, вы должны назначить другой класс для div, и вы можете сделать это:

    <div class="class1">
      <a id="someID1"></a>
      ... 
    </div>
    <div class="class2">
      <a id="someID2"></a>
      ... 
    </div>

, тогда вы можете сделать:

    document.getElementsByClassName('class2');
0 голосов
/ 04 октября 2018

Используйте DOMXpath для выбора элементов с особыми условиями.В вашем случае используйте атрибут id ребенка.

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$nodes = $xpath->query("//div[@class='classA' and a[@id='someID2']]")->item(0)->getElementsByTagName("h4");

Результат проверки в демо

0 голосов
/ 04 октября 2018

Что вам нужно это getElementById($id):

http://php.net/manual/en/domdocument.getelementbyid.php

$dom = new DomDocument();
$dom->loadHTML($html);
$a = $dom->getElementById('someID2');
...