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

时间:2012-08-01 22:33:45

标签: php simplexml

我有一个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);

1 个答案:

答案 0 :(得分:0)

这是空节点的工作示例:

re.findall(r'\d+(?:\.\d+)?|[a-z]', string, re.I)

$nodes = $rootNode->xpath("//*[text()='']"); foreach ($nodes as $node) { unset($node->{0}); } - 是一个破坏此节点并将其从父节点中删除的技巧。