2013-08-02 45 views
0

試圖讓這樣的輸出PHP的XML如何創建/添加屬性XSI:無= 「真」

<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

在你的整個代碼的第一個版本,你只是'echo'ing兩個單獨的XML文檔(一個用SimpleXML創建一個與DOM創建) 。 PHP無法知道你想如何組合它們。你的代碼的第二個版本是在DOM節點上使用' - > addAttribute()',但這是單獨的SimpleXML API的一部分。順便說一句, – IMSoP

回答

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); 
+0

。也可以使用http://www.webmasterworld.com/php/4219487.htm @NomikOS在頁面底部的(修改)例子。 'xmlns'變爲'xsi:nil'和''http://www.sitemaps.org/schemas/sitemap/ 0.9'爲'true'。所有作品... – user2465936