Я сделал приложение с использованием DomDocument & SimpleXML, но сервер не поддерживает DomDocument (Only SimpleXML). Теперь я переписываю его, но в SimpleXML нет никаких функций, таких как «getElementsByTagName» и «getElementById» (мне нужны только эти 2). Я много искал на php.net и google.com, но не могу найти его.
Я не так хорош, чтобы писать свои собственные. Итак, кто-нибудь знает альтернативный / function / tip / script для меня? 🙂
Заранее спасибо.
К счастью, если 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>
все теги <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)
Используйте XPath. http://www.php.net/manual/en/simplexmlelement.xpath.php