试图获得这样的输出
<DeclarationFile>
<Declaration Id="DEC">
<DokPVNv4>
<ParskMen>5</ParskMen>
<ParskCeturksnis xsi:nil="true"/>
无法创建<ParskCeturksnis xsi:nil="true"/>
如果只使用
$ParskCeturksnis = new SimpleXMLElement("<ParskCeturksnis></ParskCeturksnis>");
$ParskCeturksnis->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance");
echo $ParskCeturksnis->asXml();
一切正常
但如果整个代码
$DOM = new DOMDocument('1.0','UTF-8');
$DeclarationFile = $DOM->createElement('DeclarationFile');
$DOM->appendChild($DeclarationFile);
$Declaration = $DOM->createElement('Declaration');
$DeclarationFile->appendChild($Declaration);
$Declaration_att = $DOM->createAttribute('Id');
$Declaration->appendChild($Declaration_att);
$att_Declaration_text = $DOM->createTextNode('DEC');
$Declaration_att->appendChild($att_Declaration_text);
$DokPVNv4 = $DOM->createElement('DokPVNv4');
$Declaration->appendChild($DokPVNv4);
$ParskMen = '5';
$ParskMen = $DOM->createElement('ParskMen',mb_convert_encoding($ParskMen, "UTF-8") );
$DokPVNv4->appendChild($ParskMen);
$ParskCeturksnis = new SimpleXMLElement("<ParskCeturksnis></ParskCeturksnis>");
$ParskCeturksnis->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance");
echo $ParskCeturksnis->asXml();
echo $DOM->saveXML();
得到错误XML Parsing Error: junk after document element
搜索谷歌,但还没有找到解决方案......
尝试
$ParskCeturksnis = $DOM->createElement('ParskCeturksnis');
$DokPVNv4->appendChild($ParskCeturksnis)->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance");
获取XML Parsing Error: no element found
答案 0 :(得分:2)
您似乎混淆了SimpleXML和DOM扩展。虽然它们都是在同一个解析器之上实现的,并且可以使用dom_import_simplexml()
和simplexml_import_dom()
轻松切换,但这并不意味着您只需调用在创建的对象上工作的方法另一方。
在您的情况下,您主要使用DOM,因此您需要使用适当的DOM函数添加属性,特别是->createAttributeNS()
和->appendChild()
。
我认为您需要的代码是:
$ParskCeturksnis = $DOM->createElement('ParskCeturksnis');
$ParskCeturksnis->appendChild($DOM->createAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil"));
$DokPVNv4->appendChild($ParskCeturksnis);