2016-11-22 66 views
0

我正在嘗試爲OpenClinica(一個使用CDISC ODM XML表示的臨牀試驗平臺)編寫XML文件。 我的問題是,當我嘗試寫同一個的XmlWriter的XML的第一個元素,我有這樣的例外:用XmlWriter重寫名稱空間給我XmlException

An exception of type 'System.Xml.XmlException' occurred in System.Xml.dll but 
was not handled in user code 

Additional information: The prefix '' cannot be redefined from '' to 
'http://www.cdisc.org/ns/odm/v1.3' within the same start element tag. 

這裏就是我想在我的文件:

<ODM xmlns="http://www.cdisc.org/ns/odm/v1.3" 
    xmlns:OpenClinica="http://www.openclinica.org/ns/odm_ext_v130/v3.1" 
    xmlns:OpenClinicaRules="http://www.openclinica.org/ns/rules/v3.1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    FileOID="testD20161121140900+0000" 
    Description="test" 
    CreationDateTime="2016-11-21T14:09:00+00:00" 
    FileType="Snapshot" 
    ODMVersion="1.3" 
    xsi:schemaLocation="http://www.cdisc.org/ns/odm/v1.3 OpenClinica-ODM1-3-0-OC2-0.xsd"> 

這是我的代碼:

StringWriter swriter = new StringWriter(); 
XmlWriter writer = XmlWriter.Create(swriter); 

writer.WriteStartElement("ODM"); 
writer.WriteAttributeString("xmlns", "http://www.cdisc.org/ns/odm/v1.3"); 
writer.WriteAttributeString("xmlns", "OpenClinica", null, "http://www.openclinica.org/ns/odm_ext_v130/v3.1"); 
writer.WriteAttributeString("xmlns","OpenClinicaRules",null, "http://www.openclinica.org/ns/rules/v3.1"); 
writer.WriteEndElement(); 

writer.Close(); 
return swriter.ToString(); 

如果我嘗試只寫「的xmlns:的OpenClinica」和「的xmlns:OpenClinicaRules」的屬性,它的順利,但是當我嘗試寫xmln出現問題s屬性。

這裏有什麼問題?

+0

除非你有充分的理由在如此低的水平來這樣做,我建議你使用LINQ到XML或'XmlSerializer'。 –

+0

是的,我最終與XmlSerializer一起。謝謝你的評論 ! –

回答

2

嘗試以下操作:

writer.WriteStartElement("","ODM","http://www.cdisc.org/ns/odm/v1.3"); 
+0

謝謝,它工作! –