0

我是新的 xml 文件.. 我想id value使用 php 脚本获取 xml 文件的最新节点,并在我向这个 xml 文件添加一个节点时计算它.. 像这样的东西..<id>2</id>下一个节点将<id>3</id>在添加之后。 ..

假设我有一个如下的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<books>
 <book>
  <id>1</id>
  <name>Java</name>
 </book>
 <book>
  <id>2</id>
  <name>c++</name>
 </book>
</books>

你能指导我用php脚本解决这个问题的方法吗……谢谢你的进步。

现在我找到了我的解决方案

//auto id 
      $doc = new DOMDocument();
      libxml_use_internal_errors(true);
      $doc->loadXML(file_get_contents ('../books.xml')); // loads your xml

      $xpath = new DOMXPath($doc); ///create object xpath 
      $nlist = $xpath->query("//books/book/id");
      $count = $nlist->length; //count number of node 
      $id = $nlist->item($count-1)->nodeValue;
     $id+=1;

      echo $id ;
//end auto id 

因此,您可以在插入新节点时为 $id 增加一个值。

4

2 回答 2

0

保持简单simplexml

$xml = simplexml_load_string($x); // assuming XML in $x
$maxid = max(array_map('intval',$xml->xpath("//id")));

它能做什么:

  • <id>得到所有节点的数组xpath
  • 将每个值转换为,integer以便max()可以完成其工作。

现在添加一个新<book>$maxid + 1

$book = $xml->addChild('book');
$book->addChild('id',$maxid + 1);
$book->addChild('name','PHP');

看看它在行动:http ://codepad.viper-7.com/5jeXtJ

于 2013-05-06T21:14:30.413 回答
0

检查此链接:

http://www.phpeveryday.com/articles/PHP-XML-Adding-XML-Nodes-P414.html

它有一个几乎正是你需要的例子——它甚至是一个书本的例子。请注意,您需要自动增加 id 而不是像示例中那样对其进行硬编码。

它真的不言自明。

这是一个很好的参考读给你:

http://pt1.php.net/manual/en/simplexmlelement.addchild.php

希望它有所帮助。:-)

于 2013-05-06T04:02:49.170 回答