Нет способа использовать что-либо кроме UTF-8 с SimpleXML .Однако, поскольку SimpleXML - это просто более простой способ использования DOM , вы можете переключиться на использование DOM .На самом деле, то, что вы хотите, было бы довольно просто в DOM .Измените '%%something%%'
на то, что вы хотите сопоставить (например, 'administrator'
).
<?php
$xml = new DOMDocument( "1.0", "ISO-8859-1" );
$xml->load("path/to/file.xml");
$xpath = new DOMXPath( $xml );
$nodes = $xpath->query( "/working/group/userdata[ title = '%%something%%' ]" );
$array = array();
foreach( $nodes as $k => $node )
{
foreach( $node->childNodes as $cnode )
{
$array[ $k ][ $cnode->nodeName ] = $cnode->textContent;
}
}
?>
Обратите внимание: Оба DOM и SimpleXML загрузить весь документ в память, прежде чем они смогут обработать его.Из-за этого, если ваш документ больше, чем доступная память для PHP (см. Настройку ini memory_limit
), вам потребуется использовать XMLReader или XMLWriter в этих крайних случаях.
Также обратите внимание, я не сделал 'Не проверяйте это, но это должно быть чертовски близко к тому, что вам нужно.И если вам нужен пример XMLReader, дайте мне знать.Мне было проще использовать DOM для меня: P