Php 如何只获取某些DOMNode的头和尾文本?
如何在DOMDocument中仅获取节点的头和尾文本 例如,在此示例代码中,我不想看到标记的内容: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> ');
$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;
}