2012-04-08 78 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