4

空のノードを持つ 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);
4

1 に答える 1

0

空のノードの作業例を次に示します。

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

unset($node->{0})- このノードを破壊し、親ノードから削除するトリックです。

于 2017-01-12T18:28:05.513 に答える