Как загрузить несколько файлов XML в одну строку, используя simplexml_load_string? - PullRequest
0 голосов
/ 26 октября 2011

У меня есть три xml-файла, которые я хочу загрузить в свой php-файл с помощью функции simplexml_load_string .

Как мне этого добиться?

@ Jan-Henk:

Вот что я написал в комментариях:

Это то, что у меня есть в данный момент, он ищет в одном XML-файле сотрудника Джейн:

$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. И тогда вместо поиска сотрудницы Джейн как выше. Он должен искать три файла для дубликатов. Так что, если сотрудник указан два раза в любом из трех файлов. Должно вернуться: «Найдена Джейн».

1 Ответ

1 голос
/ 26 октября 2011

Просто загрузите все 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'));

Ответ для редактирования в вашем вопросе,который работает только для имени Джейн:

$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";
}
...