PHP xml-将多个文件连接在一个文件中

PHP xml-将多个文件连接在一个文件中,php,xml,Php,Xml,我有4个xml文件,我想用每个文件的内容创建一个唯一的文件,第一行和最后一行除外 详情: 我的xml文件: <?xml version="1.0"?> <Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Client> <client_id>123458</client_id> <client_type>People</

我有4个xml文件,我想用每个文件的内容创建一个唯一的文件,第一行和最后一行除外

详情:

我的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>

123458
人
子民
阿莱里奇
希戈尔
5487
人
子民
纽曼
配偶
1.xml、2.xml、3.xml和4.xml的内容如下

我想创建一个最终的.xml文件,它以

 <?xml version="1.0"?>
 <Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

以:

 </Clients>

在这些行之间,我想要第四个文件的所有行

你有一些建议吗


谢谢。

使用
fgets
读取文件,并使用
preg\u match
检查xml或客户端标记。如果该行不匹配,请将该行写入新文件。当然,您必须在新文件周围放置一个新的xml和客户端标记。

使用
fgets
读取文件,并使用
preg\u match
检查xml或客户端标记。如果该行不匹配,请将该行写入新文件。当然,您必须在新文件周围放置一个新的xml和客户端标记。

您可以使用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函数而不是字符串函数可以避免这些问题。

您可以使用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函数而不是字符串函数可以避免这些问题