PHP DOM проблема поискатеги в XML - PullRequest
0 голосов
/ 16 июля 2010

Итак, у меня есть XML-файл (экспорт XML-файла MS Word).Я просто пытаюсь заменить эти две строки:

<w:t>Meno:</w:t>

И:

<w:t>Priezvisko:</w:t>

Это более длинная выдержка XML:

<w:p w:rsidR="00CF175F" w:rsidRDefault="00CF175F">
−
<w:r>
<w:t>Meno:</w:t>
</w:r>
</w:p>
−
<w:p w:rsidR="00CF175F" w:rsidRDefault="00CF175F">
−
<w:r>
<w:t>Priezvisko:</w:t>
</w:r>
</w:p>

Я делаю это так:

$xml = file_get_contents('file.xml');

$doc = new DOMDocument();
$doc->loadXML($xml);
$doc->preserveWhiteSpace = false;

$wts = $doc->getElementsByTagNameNS('http://schemas.openxmlformats.org/wordprocessingml/2006/main','t');

foreach ($wts as $wt) {

 echo 1;

 //if ('Meno:' === substr($wt->nodevalue, 0, 5)) {
  //echo 1;
 //}

}

Этот скрипт ничего не повторяет.Почему getElementsByTagName не работает?В XML есть десятки тегов w: t.

1 Ответ

1 голос
/ 16 июля 2010

Я не знаю php, но почти наверняка проблема в том, что xml DOM считает, что «w» относится к пространству имен, которое вы еще не определили.Вместо того, чтобы искать «тег» с именем «w: t», вам нужно искать тег с именем «t» в пространстве имен, на которое ссылается «w».

Для лучшего объяснения пространств имен xml и того, как их объявить (используя «xmlns» в вашем документе, см. здесь .

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