1
我有一个带有名称空间的XML文件,我想用添加更多项目来更新此文件。使用名称空间前缀更新XML文件
这里我的XML文件的结构:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns="http://feeds.omgeu.com/ns/1.0/" xmlns:omg="http://feeds.omgeu.com/ns/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<channel>
<item>
<omg:merchantrank>1</omg:merchantrank>
<omg:pid>RBK1444C</omg:pid>
</item>
</channel>
</rss>
这里我的功能添加项目:
protected function writeFeedAppend($data,$url)
{
set_time_limit(6000);
$bucket = $url;
$doc = new \DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$doc->load($bucket);
$fragment = $doc->createDocumentFragment();
$elementChild = '';
foreach ($data as $feedData)
{
$elementChild .= '<item>';
$elementChild .= '<omg:merchantrank>';
$elementChild .= '1';
$elementChild .= '</omg:merchantrank>';
$elementChild .= '<omg:pid>';
$elementChild .= $feedData['number'];
$elementChild .= '</omg:pid>';
$elementChild .= '</item>';
$elementChild .= "\n";
}
$fragment->appendXML($elementChild);
$doc->documentElement->appendChild($fragment);
$doc->save($bucket);// Save as xml file
}
有了这个功能,我得到了错误:警告:DOMDocumentFragment :: appendXML():命名错误:尚未定义商户名称空间前缀omg
我的问题是如何定义这个名称空间,所以我可以继续添加更多的项目到我的XML文件?
希望你们能帮助我。谢谢
https://bugs.php.net/bug.php?id=44773 –
要添加到现有的答案,你应该只是使用DOM函数来创建元素,而不是生成字符串和硬插入它们。 – Evert