0

完全なxmlファイルではなく特定のノードを保存しようとしていますが、エラーが発生します。

キャッチ可能な致命的なエラー:DOMDocument :: saveXML()に渡される引数1は、DOMNodeのインスタンスである必要があります。これは、31行目のphp\corrdination.phpで指定されたDOMNodeListのインスタンスです。

私は運命のドキュメントに従っていますが、新しい要素を作成せず、すでに作成されたxmlファイルからのみ読み取るため、新しい要素の作成では機能しません。

私の31行目は

$resultX = $xpath->query('/stickers/sticker[id="200"]/position/x'); 

そして、変更されたノードのみを保存しようとすると、書き込みます。

echo $xml->saveXML($resultX);

それを行う方法について何か提案はありますか?これは私のphpファイル全体です。

    $xml = new DOMDocument();
    $xml->formatOutput = TRUE;
    $xml->preserveWhiteSpace = FALSE; 
    $xml->load('../stickers.xml');

    $xpath = new DOMXPath($xml);
    $resultX = $xpath->query('/stickers/sticker[id="200"]/position/x'); 
    $resultX->item(0)->nodeValue = "150"; 
echo $xml->saveXML($resultX);

クエリだけecho $xml->saveXML(); が機能する場合でも、前述したように、ノード構造全体が保存されます。

XMLファイル:

<stickers>
  <sticker>
    <position>
      <x>0</x>
    </position>
    <text>Hello world </text>
    <id>200</id>
  </sticker>
 </stickers>

ありがとう

4

1 に答える 1

2

エラーは、に渡す必要があることを示していDOMNodeますDOMDocument::saveXML()。したがって、次の行を変更する必要があります。

echo $xml->saveXML($resultX);

これに:

echo $xml->saveXML($resultX->item(0));
于 2013-03-23T12:22:33.247 に答える