【问题标题】:Rewriting namespace with XmlWriter give me XmlException用 XmlWriter 重写命名空间给我 XmlException
【发布时间】:2016-11-22 18:56:11
【问题描述】:

我正在尝试为使用 CDISC ODM XML 表示的临床试验平台 OpenClinica 编写 XML 文件。 我的问题是当我尝试使用 XmlWriter 编写 XML 的第一个元素时,我有这个异常:

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”属性,一切顺利,但当我尝试编写 xmlns 属性时出现问题。

这可能是什么问题?

【问题讨论】:

  • 除非您有充分的理由在如此低的级别上执行此操作,否则我建议您使用 LINQ to XML 或 XmlSerializer
  • 是的,我最终将使用 XmlSerializer。感谢您的评论!

标签: c# xml


【解决方案1】:

尝试以下方法:

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

【讨论】:

  • 我只想说你拯救了我的一天,我爱你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多