2016-09-22 135 views
1

我有一個xml的序列化對象,我想將xsi:noNamespaceSchemaLocation添加到根元素,我使用的是xmlwriter。如何使用xmlwirter將noNamespaceSchemaLocation添加到xml的根元素

我想我的XML喜歡下面的例子。

<?xml version="1.0" encoding="utf-8"?> 
 
<root xsi:noNamespaceSchemaLocation="abc.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
 
    <child>false</child> 
 
</root>

WriteStartElement不會爲我工作,因爲它會寫FileWriter對象之後創建最終的XML另一根元素。

fileWriter.WriteStartElement(「root」);
fileWriter.WriteAttributeString(「xsi」,「noNamespaceSchemaLocation」,null,「abc.xsd」);

我延長其XSD.EXE爲我的xsd生成的部分類,並在我的類增加了一個構件

[XmlAttribute(AttributeName="noNamespaceSchemaLocation",Namespace="http://www.w3.org/2001/XMLSchema-instance")] 
 
public string noNamespaceSchemaLocation = "abc.xsd";

現在輸出是 -

<?xml version="1.0" encoding="utf-8"?> 
 
<root p1:noNamespaceSchemaLocation="abc.xsd" xmlns:p1="http://www.w3.org/2001/XMLSchema-instance"> 
 
    <child>false</child> 
 
</root>

我想xsi代替p1.I發現它可能是因爲XmlAttribute的無效屬性,但無法弄清楚什麼。

使用XMLDocuments不是一個選項,因爲我想使用xml序列化。

任何幫助將不勝感激。

回答

0

由於空名稱空間而添加了p1前綴。它工作時,我從XML中刪除默認命名空間,現在當我寫部分類時,xsi前綴正在增加。