2012-04-08 79 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」)]]

是XPath查詢它意味着查找記錄的節點中具有title屬性包含
的搜索字符串的XML

您需要獲得對所需節點的引用,然後appendChild。你似乎沒有任何地方附加到現有節點

在這裏怎麼去看一看,你要追加 http://php.net/manual/en/domxpath.query.php

+0

感謝您的幫助,我知道我的代碼沒有一個參考節點呢。你給我的鏈接,我看着這一行: $ query = // book/chapter/para/informaltable/tgroup/tbody/row/entry [。 =「en」]'; 我現在明白它是從根節點到子節點,但我有點困惑「entry [。=」en「]」的意思。 – user977151 2012-04-08 18:30:36

+0

@ user977151'entry [。=「en」]'xpath的一部分表示查找名爲'entry'的節點,其內容爲「en」:' en' – 2012-04-09 01:30:36