嵌套在连续文本中的PHP XML标签->simpleXML


PHP XML tags nested in continuing text -> 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返回所有普通文本作为"wrappingTag"的值,但不包括"formatTag"值的部分。这些当然是分开的。所以像以前那样把文本放在一起对我来说似乎是不可能的。

是否有一个简单的方法来解决这个在simplexml或我必须解析我自己?

谢谢亚历克斯

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