Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何只获取某些DOMNode的头和尾文本?_Php_Xml_Domdocument - Fatal编程技术网

Php 如何只获取某些DOMNode的头和尾文本?

Php 如何只获取某些DOMNode的头和尾文本?,php,xml,domdocument,Php,Xml,Domdocument,如何在DOMDocument中仅获取节点的头和尾文本 例如,在此示例代码中,我不想看到标记的内容: $dom = new DOMDocument(); $dom->loadXML('<?xml version="1.0" encoding="UTF-8"?> <root> <test>head text <b>some bold text</b> tail text</test> </root> ');

如何在DOMDocument中仅获取节点的头和尾文本

例如,在此示例代码中,我不想看到标记的内容:
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0" encoding="UTF-8"?>
<root>
  <test>head text <b>some bold text</b> tail text</test>
</root>
');

foreach ($dom->getElementsByTagName('test') as $node) {
    echo 'nodeValue: '.$node->nodeValue."\n";
    echo 'textContent:'.$node->textContent."\n";
}
$dom=newdomdocument();
$dom->loadXML('
头文本一些粗体文本尾文本
');
foreach($dom->getElementsByTagName('test')作为$node){
回显“nodeValue:”。$node->nodeValue。“\n”;
回显“textContent:”。$node->textContent。“\n”;
}

您必须遍历每个节点,只查找文本(DOMText)的子节点,任何其他节点都可以忽略

$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0" encoding="UTF-8"?>
<root>
  <test>head text <b>some bold text</b> tail text</test>
</root>
');

foreach ($dom->getElementsByTagName('test') as $node) {
    foreach ( $node->childNodes as $sub )   {
        if ( $sub instanceof DOMText )  {
            echo 'nodeValue: '.$sub->nodeValue."\n";
            echo 'textContent:'.$sub->textContent."\n";
        }
    }
}

您也可以使用和xpath表达式来获取文本:

$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0" encoding="UTF-8"?>
<root>
  <test>head text <b>some bold text</b> tail text</test>
</root>
');

$xpath = new DOMXPath($dom);
$elements = $xpath->query('/root/test/text()');

foreach ($elements as $element) {
    echo $element->nodeValue;
}
$dom=newdomdocument();
$dom->loadXML('
头文本一些粗体文本尾文本
');
$xpath=newdomxpath($dom);
$elements=$xpath->query('/root/test/text()');
foreach($elements作为$element){
echo$element->nodeValue;
}

请告诉我们您希望得到什么,或者更好地解释想要的结果。我本以为他们想要的只是
标题文本
尾部文本
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0" encoding="UTF-8"?>
<root>
  <test>head text <b>some bold text</b> tail text</test>
</root>
');

$xpath = new DOMXPath($dom);
$elements = $xpath->query('/root/test/text()');

foreach ($elements as $element) {
    echo $element->nodeValue;
}