片段的顶级节点需要定义前缀。前缀仅对该元素节点及其子体/属性有效,直到在另一子体元素节点上重新定义。
...
$elementChild .= '<item xmlns:omg="http://feeds.omgeu.com/ns/1.0/">';
...
但是您不应该将XML创建为文本,使用DOM文档方法创建节点并将其附加到父节点。
...
$xmlns_omg = 'http://feeds.omgeu.com/ns/1.0/';
foreach ($data as $feedData) {
$item = $doc->documentElement->appendChild($doc->createElement('item'));
$item
->appendChild($doc->createElementNS($xmlns_omg, 'omg:merchantrank'))
->appendChild($doc->createTextNode('1'));
$item
->appendChild($doc->createElementNS($xmlns_omg, 'omg:pid'))
->appendChild($doc->createTextNode($feedData['number']));
}
...
DOMDocument::createElementNS()
在给定命名空间中创建元素节点。如果需要,它会添加名称空间定义。
是的,您可以为同一文档中的不同名称空间使用相同的前缀,或者为同一名称空间使用不同的前缀。