0
$contents  = "<?xml version='1.0' ?>
        <authed>1</authed>
            <book>read</book>";

このようなxml文字列を持っているimルートタグ内のすべての要素を追加したい

このような

$contents  = "<?xml version='1.0' ?>
        <root>
        <authed>1</authed>
            <book>read</book>
        </root>";
4

4 に答える 4

1

XMLでの文字列操作は、HTMLでの正規表現操作と同じです。 この答えはそれを見通しに入れます。

于 2010-02-19T13:20:25.227 に答える
0

substrを使用して、最初の部分(xmlバージョン)と2番目の部分(要素)を抽出してから、再結合することができます。

于 2010-02-19T13:22:27.287 に答える
0

ルート要素を追加することだけが必要な場合は、次のことができます

$contents = str_replace("<?xml version='1.0' ?>", 
                        "<?xml version='1.0' ?><root>", 
                        $contents . '</root>');

これにより、プロローグがそれ自体とコンテンツ内のルート要素に置き換えられ、終了ルート タグが追加されます。ただし、技術的には、ノードではなくランダムな文字列をここに挿入しているだけであることに注意してください。つまり、<root>は と同じように処理されoot><autます。文字列を操作する場合、山かっこには特別な意味はありません。セマンティクスは自分たちで定義しました。これは、上記のような単純なユースケースでは問題ありません。

ただし、ノードを操作する場合は、PHP の XML ライブラリの使用を検討してください。

于 2010-02-19T13:41:23.547 に答える
0

これは有効な XML ではありません。XML ドキュメントには、ルート要素が 1 つだけあります。非 XMLタグ スープを生成したものはすべて、有効な XML を出力するように修正する必要があります。

それ以外の場合、問題が発生した場合は、任意の種類の文字列置換を使用できます。

$contents = preg_replace('#^<\\?.*?\\?>#', '$0<root>', $contents) . '</root>';
于 2010-02-19T14:03:48.790 に答える