我有4个xml文件,我想创建一个唯一的文件,其中包含每个文件的内容,除了2个第一行和最后一行。
详细说明:
我的xml文件:
<?xml version="1.0"?>
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Client>
<client_id>123458</client_id>
<client_type>People</client_type>
<client_sub_type>Sub people</client_sub_type>
<name>Alerich</name>
<surname>Higor</surname>
</Client>
<Client>
<client_id>5487</client_id>
<client_type>People</client_type>
<client_sub_type>Sub people</client_sub_type>
<name>Newman</name>
<surname>Matew</surname>
</Client>
</Clients>
1.xml,2.xml,3.xml和4.xml有这样的内容。
我想创建一个以
开头的final.xml文件 <?xml version="1.0"?>
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
结束于:
</Clients>
在这些行之间,我想要第四个文件的所有行。
你有一些提示吗?
感谢。
答案 0 :(得分:3)
您可以使用PHP DOM功能来实现此目的:
$d1 = new DOMDocument();
$d1->load('1.xml');
$root = $d1->getElementsByTagName('Clients')->item(0);
// List of other xml files
$files = array('2.xml', '3.xml', '4.xml');
foreach($files as $file) {
$d2 = new DOMDocument();
$d2->load($file);
foreach($d2->getElementsByTagName('Client') as $elem) {
$newNode = $d1->importNode($elem, true);
$root->appendChild($newNode);
}
}
$d1->saveXMLFile('newfile.xml'));
一般提示:不要对XML文件中的换行符做任何假设!因此,“前两行和文件最后一行”的前提可能是错误的。使用XML函数而不是字符串函数可以避免这些问题。
答案 1 :(得分:0)
使用fgets
读取文件,并使用preg_match
检查xml或clients标记。如果该行不匹配,请将该行写入新文件。当然,您必须在新文件周围放置一个新的xml和clients标记。