I have this following segment of XML:
<?xml version="1.0" encoding="UTF-8"?>
<searchRetrieveResponse xmlns="http://www.loc.gov/zing/srw/">
<version>1.1</version>
<numberOfRecords>1</numberOfRecords>
<records>
<record>
<recordSchema>MARC21-xml</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<record xmlns="http://www.loc.gov/MARC21/slim" type="Authority">
<leader>00000nz a2200000nc 4500</leader>
<controlfield tag="001">040432386</controlfield>
<controlfield tag="003">DE-101</controlfield>
<controlfield tag="005">20180124053847.0</controlfield>
<controlfield tag="008">880701n||azznnbabn | ana |c</controlfield>
<datafield tag="024" ind1="7" ind2=" ">
<subfield code="a">http://d-nb.info/gnd/4043238-5</subfield>
<subfield code="2">uri</subfield>
</datafield>
<datafield tag="035" ind1=" " ind2=" ">
<subfield code="a">(DE-101)040432386</subfield>
</datafield>
<datafield tag="035" ind1=" " ind2=" ">
<subfield code="a">(DE-588)4043238-5</subfield>
</datafield>
<datafield tag="035" ind1=" " ind2=" ">
<subfield code="z">(DE-588c)4043238-5</subfield>
<subfield code="9">v:zg</subfield>
</datafield>
<datafield tag="040" ind1=" " ind2=" ">
<subfield code="a">DE-101</subfield>
<subfield code="9">r:DE-101</subfield>
<subfield code="b">ger</subfield>
<subfield code="d">9999</subfield>
</datafield>
<datafield tag="042" ind1=" " ind2=" ">
<subfield code="a">gnd1</subfield>
</datafield>
<datafield tag="065" ind1=" " ind2=" ">
<subfield code="a">13.3</subfield>
<subfield code="2">sswd</subfield>
</datafield>
<datafield tag="075" ind1=" " ind2=" ">
<subfield code="b">s</subfield>
<subfield code="2">gndgen</subfield>
</datafield>
<datafield tag="075" ind1=" " ind2=" ">
<subfield code="b">saz</subfield>
<subfield code="2">gndspec</subfield>
</datafield>
<datafield tag="079" ind1=" " ind2=" ">
<subfield code="a">g</subfield>
<subfield code="q">s</subfield>
<subfield code="u">w</subfield>
<subfield code="u">o</subfield>
<subfield code="u">z</subfield>
</datafield>
<datafield tag="083" ind1="0" ind2="4">
<subfield code="a">751.45</subfield>
<subfield code="9">d:3</subfield>
<subfield code="9">t:2007-01-01</subfield>
<subfield code="2">22/ger</subfield>
</datafield>
<datafield tag="150" ind1=" " ind2=" ">
<subfield code="a">Ölmalerei</subfield>
</datafield>
<datafield tag="450" ind1=" " ind2=" ">
<subfield code="a">Ölgemälde</subfield>
</datafield>
<datafield tag="550" ind1=" " ind2=" ">
<subfield code="0">(DE-101)040372200</subfield>
<subfield code="0">(DE-588)4037220-0</subfield>
<subfield code="0">http://d-nb.info/gnd/4037220-0</subfield>
<subfield code="a">Malerei</subfield>
<subfield code="4">obal</subfield>
<subfield code="4">http://d-nb.info/standards/elementset/gnd#broaderTermGeneral</subfield>
<subfield code="w">r</subfield>
<subfield code="i">Oberbegriff allgemein</subfield>
</datafield>
<datafield tag="670" ind1=" " ind2=" ">
<subfield code="a">M</subfield>
</datafield>
<datafield tag="677" ind1=" " ind2=" ">
<subfield code="a">Wird i.d.R. nur verwendet, wenn die Maltechnik behandelt ist.</subfield>
</datafield>
<datafield tag="750" ind1=" " ind2="7">
<subfield code="a">Peinture à l'huile</subfield>
<subfield code="0">(FrPBN)FRBNF119329441</subfield>
<subfield code="0">http://data.bnf.fr/11932944</subfield>
<subfield code="2">ram</subfield>
<subfield code="9">v:MACS-Mapping. Bitte keine Änderungen vornehmen.</subfield>
</datafield>
<datafield tag="913" ind1=" " ind2=" ">
<subfield code="S">swd</subfield>
<subfield code="i">s</subfield>
<subfield code="a">Ölmalerei</subfield>
<subfield code="0">(DE-588c)4043238-5</subfield>
</datafield>
</record>
</recordData>
<recordPosition>1</recordPosition>
</record>
</records>
<nextRecordPosition>2</nextRecordPosition>
<echoedSearchRetrieveRequest>
<version>1.1</version>
<query>WOE=4043238-5 and COD=s</query>
<xQuery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
<recordSchema>MARC21-xml</recordSchema>
</echoedSearchRetrieveRequest>
<extraResponseData>
<accountOf xmlns="">Staatsbibliothek zu Berlin - Preußischer Kulturbesitz, bpk-Bildagentur</accountOf>
</extraResponseData>
</searchRetrieveResponse>
When I run my php code below I only get a blank page. Which code is missing to access for example datafield
with tag
150 and the corresponding subfield
? What did I miss?
php code:
header('Content-type: text/html; charset=utf-8');
error_reporting(E_ALL);
$id = $_POST["id"];
// URL to fetch
$url = "https://services.dnb.de/sru/authorities?version=1.1&operation=searchRetrieve&query=WOE%3D$id%20and%20COD%3Ds&recordSchema=MARC21-xml";
// Setting the HTTP Request Headers
$User_Agent = 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0';
$request_headers = array('Contect-Type:text/xml', 'Accept:text/xml');
$ch = curl_init($url);
// Set the url
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_USERAGENT, $User_Agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute
$result = curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
// Closing
curl_close($ch);
$xml = SimpleXMLElement($result) or die("Error: Cannot create object");
echo($xml);
I have looked around and found that it might be something to do with passing it to a string but then I get nothing on screen. Not even SimpleXMLElement
Object.
Thanks for your help
The comments and other answer cover the reason why you're not getting any output. It's because of the missing new
keyword. This will show you how to take the resulting object and parse it to get the desired subfield. This simply dumps the subfield object, but you can do whatever you want with it from here.
$xmlObj = new SimpleXMLElement($xml);
foreach($xmlObj->records->record->recordData->record->datafield as $dfield)
{
if((string)$dfield["tag"] == "150")
{
$subfield = $dfield->subfield;
var_dump($subfield);
}
}