0

XMLファイルにアクセスしてアトミック値を変更するためにPhpXMLDOMを使用する方法を学ぼうとしています。私はこれまでこのようなことをしたことがなく、オンラインで同様のケースをたくさん見つけましたが、解決策を見つけることができませんでした。これは私が持っているものです:

  <?php
   $dom = new DOMDocument;
   $dom->load('getobs.xml');

   $xpath = new DOMXPath($dom);
   $nodeList = $xpath->query("//beginPosition");
   $nodeList->item(0)->nodeValue .= '546';

   $dom->saveXML();
   ?>

したがって、上記のコードで私がやろうとしていることは、次のとおりです。1)xmlファイルをロードします。2)要素「beginPosition」の値を「546」に変更します

XMLファイル全体で、この名前の要素は1つだけです(beginPosition)。私が間違っていることを教えてください。

ありがとう。ディムトリス

4

2 に答える 2

0

結果をファイルに保存していません。saveXML()は不適切な名前のメソッドであり、結果をxmlとして返し、ファイルに保存しません。

saveXML

最後の行をに変更します

 file_put_contents('getobs.xml',$dom->saveXML());
于 2013-03-26T13:57:55.343 に答える
0

結局、私は次のコードを使用してそれを行うことができました:

    <?php
    // create new DOM document and load the data
    $dom = new DOMDocument;
    $dom->load('getobs.xml');
    //var_dump($dom);
    // Create new xpath and register the namespace
    $xpath = new DOMXPath($dom);
    $xpath->registerNamespace('g','http://www.opengis.net/gml');
    // query the result amd change the value to the new date
    $result = $xpath->query("//g:beginPosition");
    $result->item(0)->nodeValue = 'sds';
    // save the values in a new xml
    file_put_contents('test.xml',$dom->saveXML());
    ?>

間違いは、名前空間を登録していなかったことです。

于 2013-03-27T11:43:43.303 に答える