如何将空的XML节点转换为空字符串,而不是SimpleXMLElement


How to convert empty XML node into empty string instead of SimpleXMLElement

我有一个XML字符串,它有时有空节点。当使用simplexml_load_string对此进行解析时,解析器将任何空节点(例如<node></node>)解释为空SimpleXMLElement。实际上,我更喜欢这些作为一个空字符串,或者完全省略。

我尝试过使用如下所示的LIBXML_NOBLANKS,但似乎没有效果。下面是一些演示这种情况的代码。节点"p2"为空:

$xml = "<xml><p1>1</p1><p2></p2><p3>3</p3></xml>";
$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOBLANKS);
header("Content-type: text/plain");
echo "STRING'n-----'n" . $xml;
echo "'n'nOBJ'n---'n" . print_r($obj,1);
echo "'n'nJSON'n----'n" . json_encode($obj);

以下是空节点的工作示例:

    $nodes = $rootNode->xpath("//*[text()='']");
    foreach ($nodes as $node) {
        unset($node->{0});
    }

unset($node->{0})-是一个破坏该节点并将其从父节点中删除的技巧。