0

如何在 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>"并换行。

然后继续下一个<doc> </doc>区块。

在学习如何执行上述操作时,我将不胜感激。

4

2 回答 2

6

尝试使用simplexml 库做一些事情,如下例所示:

$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 上还有更多具体的问题和答案:

于 2013-06-26T23:22:11.920 回答
1

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

第一个已经被指出:SimpleXML

第二个选项是DOM - 文档对象模型

为了让生活更轻松,您可以使用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!
}
于 2013-06-26T23:57:38.457 回答