PHP XML标记嵌套在连续文本中 - > SimpleXML的

时间:2014-06-11 15:13:27

标签: php xml simplexml

我正在使用大多数未知内容的XML。 我正在将它转换为非常粗略的HTML输出。

但我在XML中遇到这种结构:

<wrappingTag>
    text text text
    <formatTag>formatted text</formatTag>
    continued text text text text 
    <formatTag2>much more formatted text</formatTag2>
    continued text text text text 
</wrappingTag>

当我使用simpleXML元素获取数据时,simpleXML将所有正常文本作为&#34; wrappingTag&#34;中的值返回。但没有来自&#34; formatTag&#34;值。这些当然是分开的。 因此,将文本放在原处似乎对我来说是不可能的。

有一种简单的方法可以在simplexml中解决这个问题,还是我必须自己解析它?

感谢名单

亚历

1 个答案:

答案 0 :(得分:1)

DOM不会受此影响,您可以将它们互相转换。

$element = simplexml_load_string($xml);
$node = dom_import_simplexml($element);
var_dump($node->nodeValue);

DOMElement :: $ nodeValue是所有后代文本节点(包括cdata)的文本内容。

从节点获取文本内容的另一种可能性是DOMXPath :: evaluate()。

$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
var_dump($xpath->evaluate('string(//wrappingTag[1])'));

演示:https://eval.in/161109