2017-10-11 4 views
0

Ich habe einen XML-Wert in der PHP-Variable, und ich muss das Attribut xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" and xmlns="http://www.loc.gov/MARC21/slim" auf dem 'Datensatz' Element hinzufügen. Unten ist mein xml in phpHinzufügen von Attribut mit Doppelpunkt zu Xml-Knoten in PHP

<record xmlns="http://www.loc.gov/MARC21/slim"> 
 
    <leader>01344cam a2200385 i 4500</leader> 
 
    <controlfield tag="001">19196211</controlfield> 
 
    <controlfield tag="005">20160810165833.0</controlfield> 
 
    <controlfield tag="008">160728t20162015nyu   000 1 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">2</subfield> 
 
    <subfield code="e">ncip</subfield> 
 
    <subfield code="f">20</subfield> 
 
    <subfield code="g">y-gencatlg</subfield> 
 
    </datafield> 
 
</record>

Andere Zeichen an der Stelle des Doppelpunktes arbeiten, aber Doppelpunkt nicht funktioniert. Ich weiß, dass es etwas mit Namensräumen zu tun hat, aber ich kann das Problem nicht herausfinden. Jede Hilfe wird geschätzt.

Antwort

0

Wenn Sie ein Attribut mit einem: hinzufügen, bedeutet dies, dass Sie ein Attribut mit einem Namespace hinzufügen. Was Sie tun müssen, ist sicherzustellen, dass dieser Namespace definiert ist. Also, wenn das Attribut hinzufügen, verwenden Sie den dritten Parameter als URI für den Namespace ...

$nodes = $xml->xpath('//zs:record//def:record')[0]; 
$nodes[0]->addAttribute('xsi:schemaLocation', 'http://www.loc.gov/MARC21/slim', 
     'http://www.w3.org/2001/XMLSchema-instance'); 

echo $nodes[0]->asXML(); 

gibt ...

<record xmlns="http://www.loc.gov/MARC21/slim" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim"> 
+0

so schrieb ich dies. '$ nodes [0] -> addAttribute ('xsi: schemaLocation', 'http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd' , 'http://www.w3.org/2001/XMLSchema-instance'); $ nodes [0] -> addAttribute ('xmlns: xsi', 'http://www.w3.org/2001/XMLSchema-instance','http://www.w3.org/2001/XMLSchema- Beispiel'); ' –

+0

Und die Ausgabe ist' ' Beachten Sie, dass 'xsi: xsi' unnötig ist und nicht kommen sollte. –

+0

und ja, ich versuche, zwei Elemente hinzuzufügen. Eins ist 'xmlns: xsi' und das andere ist' xsi: schemaLocation'. –

Verwandte Themen