DomDocument - получить узел xml без добавления пространств имен - PullRequest
0 голосов
/ 06 марта 2020

Тест xml:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<testroot xmlns:abc="http://abc">
    <testA>testNodeText</testA>
</testroot>

Код теста:

$xml = file_get_contents('test.xml');
$dom = new \DOMDocument();
$dom->loadXML($xml);

var_dump(
  $dom->C14N(),
  $dom->getElementsByTagName('testA')->item(0)->C14N()
);

Результат:

// 1
<testroot xmlns:abc="http://abc">\n
    <testA>testNodeText</testA>\n
</testroot>

// 2
<testA xmlns:abc="http://abc">testNodeText</testA>

При получении содержимого узла DomDocument добавляет пространство имен. Проблема в том, что узел testA не равен одному узлу testA. Это имеет огромное влияние при создании значения ha sh из частей XML. Я просто не могу получить узел из XML и вычислить га sh из него, потому что есть пространства имен, перемещенные из документа root.

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

...