2012-04-08 10 views
0

新しいデータを既存のxmlファイルに追加しようとしています。これはこれまで私が持っているものです:DOM文書のxmlファイルへのデータの追加

$doc = new DOMDocument(); 
$doc->formatOutput = true; 

$doc->loadXml('library.xml'); 

$path = new DOMXPath($doc); 

$b=$doc->createElement('book'); 

$ISBN = $doc->createElement('isbn'); 
$ISBN->appendChild(
    $doc->createTextNode($_GET['isbn']) 
); 
    $b->appendChild($ISBN); 


    $edition = $doc->createElement('edition'); 
    $edition->appendChild(
    $doc->createTextNode($_GET['ed']) 
    ); 
    $b->appendChild($edition);*/ 


    $doc->save("library.xml"); 

私は自分のデータを挿入する場所を取得する方法に問題があります。

$query = sprintf('//record[./title[contains(., "%s")]]', $searchString); 

私はいくつかの使用クエリ()を見ましたが、パスがどのように記述されているのか誰かが説明できるかどうかは疑問です。

答えて

0

//レコードの[./タイトル[(。、 "%s" を)が含ま]]

はそれが
検索文字列が含まれているtitle属性を持つXML内のレコードノードを見つける意味XPathクエリです

あなたはそれにappendChildしたいノードへの参照を取得する必要があります。あなたはあなたの助けを http://php.net/manual/en/domxpath.query.php

+0

感謝を追加したい場所をここで取得する方法を見てください、既存のノード

にどこにも追加しないように見えるが、私は私のコードがまだ参照ノードを持っていませんでした知っています。あなたが私に与えたリンクは、次の行を見ています: $ query = // book/chapter/para/informaltable/tgroup/tbody/row/entry [ = "en"] '; 私はそれがルートノードから子ノードへと移行していることを理解していますが、「entry [。= "en"]」とは何か混乱しています。 – user977151

+0

@ user977151 xpathの 'entry [。=" en "]'部分は、コンテンツ "en"を持つ 'entry'という名前のノードを探します: ' en' –

関連する問題