使用php Simple XML获取节点的文本部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用php Simple XML获取节点的文本部分相关的知识,希望对你有一定的参考价值。

给出php代码:

$xml = <<<EOF
<articles>
<article>
This is a link
<link>Title</link>
with some text following it.
</article>
</articles>
EOF;

function traverse($xml) 
    $result = "";
    foreach($xml->children() as $x) 
        if ($x->count()) 
            $result .= traverse($x);
        
        else 
            $result .= $x;
        
    
    return $result;


$parser = new SimpleXMLElement($xml);
traverse($parser);

我希望函数traverse()返回:

This is a link Title with some text following it.

但是,它仅返回:

Title

是否有一种方法可以使用simpleXML(显然是为了使用数据而不是像在此简单示例中那样仅返回数据)?”>

谢谢,N。

给出php代码:$ xml = <<< [这是一个链接

标题,后面带有一些文本。

答案
也许有一些方法可以仅使用SimpleXML来实现所需的功能,但是在这种情况下,最简单的方法是使用DOM。好消息是,如果您已经在使用SimpleXML,则无需更改任何内容,因为DOM和SimpleXML都是basically interchangeable

// either $articles = simplexml_load_string($xml); echo dom_import_simplexml($articles)->textContent; // or $dom = new DOMDocument; $dom->loadXML($xml); echo $dom->documentElement->textContent;

另一答案
node->asXML();// It's the simple solution i think !!
另一答案
因此,对我的问题的简单回答是:Simplexml无法处理这种XML。请改用DomDocument。
另一答案
您只需将其视为字符串即可使用simplexml获得DOM元素的文本节点:
另一答案
此问题已经得到解决,但是强制串连(即$ sString =(字符串)oSimpleXMLNode-> TagName)始终对我有用。
另一答案
就像@tandu说的那样,这是不可能的,但是如果您可以修改XML,这将起作用:
另一答案
尝试一下:

以上是关于使用php Simple XML获取节点的文本部分的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 将 Simple XML 解释为 HTML?

SimpleXML 和 php - 获取包含与另一个节点匹配的文本的节点

使用 Java DOM 获取 XML 节点文本值

如何使用 xpath/php 获取 xml 文件中的节点名称?

PHP XMLReader 获取父节点?

如果存在,如何获取xml文件的子节点,否则使用php跳转到下一个节点