使用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 - 获取包含与另一个节点匹配的文本的节点