如何在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>
之间的所有内容):
echo "<doc>"
并打破$ new中的新行。<title>
和</title>
之间的所有内容写入$ new。<url>
和</url>
之间的所有内容写入$ new。<abstract>
和<abstract>
之间的所有内容写入$ new。echo "</doc>"
并打破新的一行。然后转到下一个<doc>
</doc>
区块。
我非常感谢学习如何做到这一点的所有和任何帮助。
答案 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上有更多具体的问题和答案:simplexml
答案 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!
}