在PHP中解析和编辑XML文件

时间:2013-06-26 22:22:53

标签: php xml file xml-parsing

如何在PHP中对XML文件进行以下编辑。我基本上想保留一些元素并将这些元素写入新的XML文件。

所以,我知道如何打开新文件并准备写入,然后打开XML文件并逐行迭代:

$lines = fopen("file.xml", "r");
$new = fopen("newFile.xml", "w");
foreach($lines as $line){

    /* operations on each line here */
}

我不想对每一行进行操作,而是对file.xml中的某些元素进行操作。

我需要做的是每个<doc>元素(<doc></doc>之间的所有内容):

  1. echo "<doc>"并打破$ new中的新行。
  2. <title></title>之间的所有内容写入$ new。
  3. <url></url>之间的所有内容写入$ new。
  4. <abstract><abstract>之间的所有内容写入$ new。
  5. echo "</doc>"并打破新的一行。
  6. 然后转到下一个<doc> </doc>区块。

    我非常感谢学习如何做到这一点的所有和任何帮助。

2 个答案:

答案 0 :(得分:6)

尝试使用以下示例中的simplexml library执行某些操作:

$xml = simplexml_load_file("file.xml"); //load file as SimpleXML object
$newXml = SimpleXMLElement(); // create new SimpleXML object

foreach ($xml->doc as $d){ // change "$xml->doc" to the path to doc in your file
    $doc = $newXml->addChild("doc"); // add <doc></doc>
    $doc->addChild("title", (string)$d->title); //add title child within doc
    $doc->addChild("url", (string)$d->url); //add url child within doc
    $doc->addChild("abstract", (string)$d->abstract); //add abstract child within doc
}
$new = fopen("newFile.xml", "w"); // open new file
fwrite($new, $newXml->asXML()); //write XML to new file using asXML method
fclose($new); // close the new file

希望这会有所帮助。你可以在这里找到simplexml的完整文档:http://php.net/simplexml.examples-basic在Stackoverflow上有更多具体的问题和答案:

答案 1 :(得分:1)

在PHP中,您有两个简单的选项来处理XML文件。 (还有其他人)

第一个已被指出:SimpleXML

第二个选项是DOM - Document Object Model

为了让生活更轻松,您可以使用XPath

搜索XML文件
$doc = new DOMDocument;    
$doc->load('myXMLFile.xml');

$xPath = new DOMXPath($doc);

// Give me all doc elements inside the XML
$docElements = $xPath->query('doc');

foreach ($docElements as $docElement) {
    // Work your magic here!
}