XML – один из самых распространенных способов представления данных в интернете, и надо уметь его правильно использовать.
Итак. Что потребуется. Для начала потребуется заготовка в виде простого xml. (test.xml)
<?xml version="1.0" encoding="UTF-8"?>
<test>
<data val="1">1</data>
<data val="2">2</data>
<data val="3">
<innerdata attr="val">node</innerdata>
</data>
</test>
Что будем использовать. Использовать будет расширение
SimpleXML, доступное в PHP.
Работа с существующим документом
Самое простое, что можно сделать – это загрузить документ. Способов здесь два.
Первый – загрузить документ из файла:
$xml = simplexml_load_file('test.xml');
Второй – распарсить строку, содержащую xml:
$xmlString = file_get_contents("./test.xml");
$xml = new SimpleXMLElement($xmlString);
Данные
представляются в виде объектов. Поэтому, чтобы получить доступ,
например, к атрибуту “attr” узла innerdata, нам следует написать такой
код:
$val = $xml->data[2]->innerdata["attr"];
echo $val."<br/>";
На экран будет выведено:
val
Никто не запрещает использовать foreach
foreach($xml->data as $data)
{
echo "value = ${data[val]}<br/>";
}
value = 1
value = 2
value = 3
Добавление узлов и атрибутов
$node = $xml->addChild("data","data4 node");
$node->addAttribute("val","4");
print($xml->asXML());
<?xml version="1.0" encoding="UTF-8"?>
<test>
<data val="1">data1 node</data>
<data val="2">data2 node</data>
<data val="3">
<innerdata attr="val">node</innerdata>
</data>
<data val="4">data4 node</data></test>
Подводные камни
print_r($xml->data[0]);
SimpleXMLElement Object ( [@attributes] => Array ( [val] => 1 ) [0] => 1 )
Если не хотите, чтобы при работе возникали проблемы, то следует позаботится об этом заранее
print_r((String)$xml->data[0]);
1