如何使用simplexml_load_string将多个XML文件加载到一个字符串中?

时间:2011-10-25 21:03:50

标签: php xml simplexml

我有三个xml文件,我想用 simplexml_load_string 函数加载到我的php文件中。

我怎样才能做到这一点?

@扬亨克:

以下是我在评论中写的内容:

这就是我现在所拥有的,它在一个xml文件中搜索员工Jane:

$result   = simplexml_load_file('employees1.xml');
echo "<strong>Matching employees with name 'Jane'</strong><br />";
$employees = $result->xpath('/employees/employee[name="Jane"]');

foreach($employees as $employee) {
    echo "Found {$employee->name}<br />";
}
echo "<br />";

三个xml文件的外观如何?而不是像上面那样搜索员工Jane。它应该在三个文件中搜索重复项。因此,如果员工在三个文件中的任何一个中列出两次。它应该回归:“找到简”。

1 个答案:

答案 0 :(得分:1)

分别加载所有3个文件:

$xmlOne   = simplexml_load_file('path/to/file1.xml');
$xmlTwo   = simplexml_load_file('path/to/file2.xml');
$xmlThree = simplexml_load_file('path/to/file3.xml');

如果你真的想使用simplexml_load_string而不是simplexml_load_file,你可以这样做:

$xmlOne = simplexml_load_string(file_get_contents('path/to/file1.xml'));

回答你问题中的编辑,这只适用于名字Jane:

$files = array('employees1.xml', 'employees2.xml', 'employees3.xml');
$xpathQuery = '/employees/employee[name="Jane"]';
$count = 0;

foreach ($files as $file) {
    $xml = simplexml_load_file($file);
    $result = $xml->xpath($xpathQuery);

    if (count($result) > 0) {
        $count++;
    }
}

if ($count > 1) {
    echo "Duplicates for Jane";
} else {
    echo "No duplicates for Jane";
}