我在XML,命名空间和PHP DOM方面遇到了一些问题。
这是我应该得到的输出:
<cd:Document xmlns="http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2" xmlns:cd="http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0/ZbsCreaDoc.xsd">
<cd:Data>
<cd:DataFormat>
<cd:MimeType>text/xml</cd:MimeType>
</cd:DataFormat>
<cd:Content>
<cd:EmbeddedData>
这是我的PHP代码
$root = $doc->appendChild($doc->createElementNS('http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2', 'cd:Document'));
$root->setAttributeNS('http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2', 'cd', 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0');
$root->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation', 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0/ZbsCreaDoc.xsd');
有任何想法如何解决这个问题?
答案 0 :(得分:3)
<?php
$doc = new DOMDocument();
$doc->formatOutput = true;
//set root element to correct cd prefix _and_ namespace:
$root = $doc->appendChild(
$doc->createElementNS(
$cd = 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0',
'cd:Document'));
//this is the bit of obscure magic: it will set the default namespace
$doc->createAttributeNS(
'http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2',
'xmlns');
//now continue as normal
$root->setAttributeNS(
'http://www.w3.org/2001/XMLSchema-instance',
'xsi:schemaLocation',
'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0/ZbsCreaDoc.xsd');
$data = $root->appendChild($doc->createElementNS($cd,'cd:Data'));
$dataformat = $data->appendChild($doc->createElementNS($cd,'cd:DataFormat'));
$dataformat->appendChild($doc->createElementNS($cd,'cd:MimeType','text/xml'));
$content = $data->appendChild($doc->createElementNS($cd,'cd:Content'));