К счастью, если SimpleXML не поддерживает эти DOM-методы, он поддерживает XPath с методом SimpleXMLElement::xpath()
.
И поиск по имени тегаили id с запросом XPath не должен быть слишком сложным.
Я полагаю, что такие запросы должны помочь:
- поиск по идентификатору:
//*[@id='VALUE']
- поиск по имени тега:
//TAG_NAME
Например, со следующей частью XML и кодом для его загрузки:
$str = <<<STR
<xml>
<a id="plop">test id</a>
<b>hello</b>
<a>a again</a>
</xml>
STR;
$xml = simplexml_load_string($str);
Вы можете найти один элемент по его id="plop"
с чем-токак это:
$id = $xml->xpath("//*[@id='plop']");
var_dump($id);
И поиск всех тегов <a>
с этим:
$as = $xml->xpath("//a");
var_dump($as);
И вывод будет следующим:
array
0 =>
object(SimpleXMLElement)[2]
public '@attributes' =>
array
'id' => string 'plop' (length=4)
string 'test id' (length=7)
array
0 =>
object(SimpleXMLElement)[3]
public '@attributes' =>
array
'id' => string 'plop' (length=4)
string 'test id' (length=7)
1 =>
object(SimpleXMLElement)[4]
string 'a again' (length=7)