Я совершенно новичок в XPath , так что будьте спокойны со мной; -)
Я пытаюсь получить контент с узла
Структура XMLвыглядит (упрощенно OOXML):
<w:p>
<w:r>
<w:drawing>
<wp:anchor wp14:editId="3BCCBF8F" wp14:anchorId="1109B0B5"
distR="114300" distL="114300" distB="0" distT="0"
allowOverlap="1" layoutInCell="1" locked="0" behindDoc="0"
relativeHeight="251663360" simplePos="0">
<a:graphic a="{url}">
<a:graphicData uri="{urli}">
<pic:pic xmlns:pic="{uri}">
<pic:blipFill>
<a:blip cstate="print" r:embed="rId13"/>
{all closing tag p, r, w etc}
<w:p>
<w:r>
<w:drawing>
<wp:anchor wp14:editId="3BCCBF8F" wp14:anchorId="1109B0B5"
distR="114300" distL="114300" distB="0" distT="0"
allowOverlap="1" layoutInCell="1" locked="0" behindDoc="0"
relativeHeight="251663360" simplePos="0">
<a:graphic a="{url}">
<a:graphicData uri="{urli}">
<pic:pic xmlns:pic="{uri}">
<pic:blipFill>
<a:blip cstate="print" r:embed="rId14"/>
{all closing tag p, r, w etc}
Мой код выглядит так:
$result
ниже просто строка с xml
$document = new DOMDocument();
$document->loadXML($result);
$xpath = new DOMXpath($document);
$xpath->registerNamespace(
'word', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'
);
foreach ($xpath->evaluate('//word:drawing//word:anchor') as $index => $node) {
var_dump($node);
}
Я получаюпустой узел.Я явно делаю что-то не так.Я ожидаю узел привязки с этим кодом.
Я мог бы в основном циклически бросать каждый узел и находить дочерние элементы для каждого узла, , но это, кажется, потрачено впустую XPath ...
Что-то вроде:
foreach ($xpath->evaluate('//word:drawing') as $index => $node) {
foreach($xpath->evaluate('*', $node) as $anchornode) {
var_dump($anchornode);
}
}
Что я действительно хочу сделать, это получить значения r: embed в элементе рисунка (rId13 и rId14)
Я пытался найти то, что я хочу, в других вопросах здесь, на SO (их много) .... Если вы найдете такой вопрос, просто направьте меня на этот вопрос, пожалуйста.