Я загружаю внешний xml-файл, содержащий пользовательские метаданные, которые выглядят следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<user_information>
<user url="http://usersweb.com">
<name>Arnold</name>
<lastname>
<name>Arnoldson</name>
</lastname>
<age>42</age>
</user>
<user url="http://anotheruserweb.com">
<name>Arnold</name>
<lastname>
<name>Arichson</name>
</lastname>
<age>42</age>
</user>
And so on....
</user_information>
Я знаю форматирование с помощью
<lastname>
действительно глупо, но я не могу изменить источник.
Я хочу загрузить атрибут "url" из
<user>
, но только если
<name>
и
<lastname>
соответствует значениям имен, которые я сохранил в своей собственной пользовательской базе данных.
Я знаю, как распарсить остальную часть с помощью PHP, но только совпадающая последовательность кажется мне сложной. Любая помощь приветствуется!
EDIT: Поскольку я не могу предоставить вам исходный XML, я нашел аналогичную структуру кода в API метаданных Spotify. Мы можем поработать с возвращаемым XML-файлом из поиска по треку "Танец домино": ws.spotify.com/search/1/track?q=Domino Dancing
Он имеет точно такую же структуру, за исключением того, что в нем используются другие слова. Возвращаемый файл выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<tracks xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.spotify.com/ns/music/1">
<opensearch:Query role="request" startPage="1" searchTerms="Domino Dancing"/>
<opensearch:totalResults>39</opensearch:totalResults>
<opensearch:startIndex>0</opensearch:startIndex>
<opensearch:itemsPerPage>100</opensearch:itemsPerPage>
<track href="spotify:track:2aV5vCNH5tOOe0GGKqfx5Z">
<name>Domino dancing</name>
<artist href="spotify:artist:2ycnb8Er79LoH2AsR5ldjh">
<name>Pet Shop Boys</name>
</artist>
<id type="isrc">GBAYE0301704</id>
<album href="spotify:album:0BAfuhzkGjckMhsL2gVbzR">
<name>Ultimate</name>
<released>2010</released>
<availability>
<territories>AT BE CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IT LT LU NL NO PL PT RO SE SI SK</territories>
</availability>
</album>
<track-number>7</track-number>
<length>258.106000</length>
<popularity>0.57092</popularity>
</track>
<track href="spotify:track:4mVLzFbc3gaCoWCEENLouc">
<name>Domino Dancing</name>
<artist href="spotify:artist:2ycnb8Er79LoH2AsR5ldjh">
<name>Pet Shop Boys</name>
</artist>
<id type="isrc">GBAYE8800056</id>
<album href="spotify:album:0Jt2LzWgtGxy3GZH5i2Kcy">
<name>Discography - Complete Singles Collection</name>
<released>1991</released>
<availability>
<territories>AT BE CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IT LT LU NL NO PL PT RO SE SI SK</territories>
</availability>
</album>
<track-number>10</track-number>
<length>258.333000</length>
<popularity>0.56159</popularity>
</track>
<track href="spotify:track:72kgJ1brMxxeDiPNdH6qqW">
<name>Viva la vida/Domino dancing</name>
<artist href="spotify:artist:2ycnb8Er79LoH2AsR5ldjh">
<name>Pet Shop Boys</name>
</artist>
<id type="isrc">GBCEW0900049</id>
<album href="spotify:album:4DZfMTDyBwnJQ0k1PaT6U4">
<name>Pet Shop Boys Christmas</name>
<released>2009</released>
<availability>
<territories>AT BE CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IT LT LU NL NO PL PT RO SE SI SK</territories>
</availability>
</album>
<track-number>4</track-number>
<length>333.507000</length>
<popularity>0.51961</popularity>
</track>
</tracks>
Если мы притворимся, что user_information=tracks user=track url=href lastname=artist.
Надеюсь это поможет!
EDIT2: я решил это, используя документ Xpath и пространства имен. Всем спасибо за попытку!