У меня есть строковая переменная, содержащая XML-данные, и мне было интересно, есть ли простой способ извлечь поля и данные из файла. Через итеративный общий способ, без указания имени тегов в коде.Как динамически извлекать данные из XML в PHP?
1
A
ответ
5
Вы можете использовать SimpleXML.
Загрузите данные с simplexml_load_string И тогда вы можете сделать петлю для разбора XML в массив, благодаря SimpleXML class
Как это называется, это довольно просто сделать.
1
Есть many XML parsing libraries, каждый из которых имеет свои сильные стороны и раздражения, поэтому вы найдете широкий спектр решений.
Однако, это хороший snipplet, который небольшой, быстрый и функции независимо от того, какие библиотеки установлены, потому что это регулярное выражение.
Вы feed it an XML string and it returns an array of the whole dynamic structure:
$xml = file_get_contents('example.xml');
$data = xml2array($xml);
echo "<pre>" . print_r($data, true) . "</pre>";
Функция:
function xml2array($xml) {
$xmlary = array();
$reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s';
$reattrs = '/(\w+)=(?:"|\')([^"\']*)(:?"|\')/';
preg_match_all($reels, $xml, $elements);
foreach ($elements[1] as $ie => $xx) {
$xmlary[$ie]["name"] = $elements[1][$ie];
if ($attributes = trim($elements[2][$ie])) {
preg_match_all($reattrs, $attributes, $att);
foreach ($att[1] as $ia => $xx)
$xmlary[$ie]["attributes"][$att[1][$ia]] = $att[2][$ia];
}
$cdend = strpos($elements[3][$ie], "<");
if ($cdend > 0) {
$xmlary[$ie]["text"] = substr($elements[3][$ie], 0, $cdend - 1);
}
if (preg_match($reels, $elements[3][$ie]))
$xmlary[$ie]["elements"] = xml2array($elements[3][$ie]);
else if ($elements[3][$ie]) {
$xmlary[$ie]["text"] = $elements[3][$ie];
}
}
return $xmlary;
}
Смежные вопросы
- 1. извлекать данные из XML-ответ ж/PHP
- 2. Bash извлекать данные из XML
- 3. Как динамически извлекать данные из базы данных
- 4. , как извлекать данные из XML разбора
- 5. как извлекать данные из XML-документ
- 6. как извлекать данные из JSON в PHP
- 7. Динамически извлекать данные Oracle из двойного параметра?
- 8. динамически извлекать определенные данные из таблицы JSon
- 9. Как данные XML и извлекать необходимую информацию из файла xml
- 10. не может извлекать данные из xml-файла
- 11. извлекать данные из тега xml Python
- 12. как извлекать данные из CDATA
- 13. извлекать значения из xml
- 14. Как хранить теги XML и извлекать данные
- 15. PHP-извлекать данные из вложенного JSON
- 16. PHP не извлекать данные из базы данных
- 17. как извлекать данные из JSON
- 18. извлекать данные из aspnet_Profile
- 19. извлекать данные из JSON
- 20. , как извлекать данные из двух таблицы в торт PHP
- 21. PHP - JSON массив - Неуверенные, как извлекать данные
- 22. извлекать определенные данные из «file_get_contents»
- 23. извлекать содержимое из Google Drive динамически
- 24. как извлекать поля из ответа XML
- 25. извлекать данные из 2 xml-файлов в третий файл
- 26. , как извлекать данные из нескольких таблиц MySQL
- 27. как извлекать данные из JSON в JSON
- 28. извлекать элементы из документа xml
- 29. извлекать данные из базы данных в компоненты
- 30. Как динамически извлекать константу в java?
почему вы не читали инструкцию PHP? – cweiske
Ну, в его защиту у меня возникли трудности с поиском simpleXML в первый раз. Руководство по PHP довольно большое, и небольшая подсказка от пользователей SO быстро и полезно. – Shikiryu
Я согласен с Chouchenos –