我在php变量中有一个xml值,我需要在'record'元素上添加属性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"
。下面是我在php中的xml
<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>
其他字符在冒号处起作用,但冒号不起作用。我知道它有与命名空间相关的东西,但我无法弄清楚问题。任何帮助表示赞赏。
答案 0 :(得分:0)
使用:添加属性时,就像添加带有命名空间的属性一样。您需要做的是确保定义此命名空间。因此,在添加属性时,您使用第三个参数作为命名空间的URI ...
$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();
...给出
<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">