我在 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>
其他字符在冒号的位置起作用,但冒号不起作用。我知道它有一些与命名空间相关的东西,但我无法找出问题所在。如有任何帮助,我们将不胜感激。
当添加带有 : 的属性时,这就像您所说的添加带有命名空间的属性。 您需要做的是确保定义了该名称空间。 因此,在添加属性时,您使用第三个参数作为命名空间的 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">
当属性名称包含冒号时,只需在名称“xmlns:”前添加:
$object->addAttribute('xmlns:xsi:schemaLocation', 'http://www.loc.gov/MARC21/slim');