2017-10-14 1 views
0

Ich habe diese URL:Wie für den Zugriff auf Werte von XML-URL mit PHP direkt

http://lx2.loc.gov:210/lcdb?operation=searchRetrieve&recordSchema=marcxml&version=1.1&maximumRecords=10&query=bath.isbn%3D9781452110103

, die eine XML-Antwort zurück, ich will Werte es direkt durch den gesamten Inhalt ohne Looping holen, die ich bisher habe nur auf den Namen des Wurzelknotens des XML zugegriffen, der $str=$xml->getName(); ist. Gibt es irgendeine Möglichkeit, auf die restlichen Knoten zuzugreifen?

Unten ist das XML-Beispiel, das von der URL zurückgegeben wird.

<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"> 
<zs:version>1.1</zs:version> 
<zs:numberOfRecords>2</zs:numberOfRecords> 
<zs:records> 
<zs:record> 
<zs:recordSchema>marcxml</zs:recordSchema> 
<zs:recordPacking>xml</zs:recordPacking> 
<zs:recordData> 
<record xmlns="http://www.loc.gov/MARC21/slim"> 
<leader>01517cam a2200277 i 4500</leader> 
<controlfield tag="001">17092185</controlfield> 
<controlfield tag="005">20150720141836.0</controlfield> 
<controlfield tag="008">111221s2011 caua 000 0 eng</controlfield> 
<datafield tag="906" ind1=" " ind2=" "> 
<subfield code="a">7</subfield> 
<subfield code="b">cbc</subfield> 
<subfield code="c">orignew</subfield> 
<subfield code="d">1</subfield> 
<subfield code="e">ecip</subfield> 
<subfield code="f">20</subfield> 
<subfield code="g">y-gencatlg</subfield> 
</datafield> 
</zs:recordData> 
<zs:recordPosition>2</zs:recordPosition> 
</zs:record> 
</zs:records> 
<zs:echoedSearchRetrieveRequest> 
<zs:version>1.1</zs:version> 
<zs:query>bath.isbn=9781452110103</zs:query> 
<zs:maximumRecords>10</zs:maximumRecords> 
<zs:recordPacking>xml</zs:recordPacking> 
<zs:recordSchema>marcxml</zs:recordSchema> 
</zs:echoedSearchRetrieveRequest> 
</zs:searchRetrieveResponse> 
+0

Verwendung PHP XML-Parser: - https://www.w3schools.com/php/php_xml_simplexml_read. asp –

+0

Ich habe das schon mit 'simplexml_load_file' gemacht. –

+0

Können Sie bitte die erwartete Ausgabe bereitstellen. – mega6382

Antwort

0

Vielleicht ist es eine Option für Sie simplexml_load_file mit xpath zu verwenden.

Zuerst müssen Sie die namespace registrieren. Sie können dann den Xpath-Ausdruck für das, wonach Sie suchen, ändern.

Zum Beispiel:

$xml = simplexml_load_file("http://lx2.loc.gov:210/lcdb?operation=searchRetrieve&recordSchema=marcxml&version=1.1&maximumRecords=10&query=bath.isbn%3D9781452110103"); 
$xml->registerXPathNamespace("slim", "http://www.loc.gov/MARC21/slim"); 
$path = '/zs:searchRetrieveResponse/zs:records/zs:record[1]/zs:recordData/slim:record[1]/slim:datafield[1]/slim:subfield[@code="c"]'; 
$result = $xml->xpath($path)[0]; 
echo $result; 

bewirkt:

orignew

+0

vielen Dank. Es hat wie ein Zauber funktioniert. –

Verwandte Themen