在XML文档中使用“Xlmns”时出错

时间:2015-05-28 09:48:47

标签: c# xml ranorex

我想使用c#:

在xml中生成以下代码片段
<?xml version="1.0" encoding="utf-8" ?>
<PrincetonStorageRequest
         xmlns="http://munichre.com/eai/dss/pct/v1.0"
         requestId="RequestOut_MAG_Test_02"
         timestampUtc="2015-02-19T09:25:30.7138903Z">      
  <StorageItems>

我的代码是:

XmlWriter writer = XmlWriter.Create(fileName);
writer.WriteStartDocument(true);
writer.WriteStartElement("PrincetonStorageRequest");
writer.WriteAttributeString("xmlns","http://example.com/abc/dss/pct/v1.0");

writer.WriteAttributeString("requestId",name);
writer.WriteAttributeString("timestampUtc","2015-02-19T09:25:30.7138903Z");

writer.WriteStartElement("StorageItems");

但我得到了

  

“前缀”不能从“在同一个起始元素标记内重新定义。

1 个答案:

答案 0 :(得分:2)

从您的XML和错误中,我相信这是因为您在添加没有名称空间声明的元素后添加了默认名称空间,因此您有效地创建了一个元素,然后然后更改其名称空间。

尝试以下代码 - 当我在本地测试时,它会停止错误,只是因为我认为你想要的XML:

        XmlWriter writer = XmlWriter.Create(fileName);
        writer.WriteStartDocument(true);
        writer.WriteStartElement("PrincetonStorageRequest", "http://example.com/abc/dss/pct/v1.0");
        writer.WriteAttributeString("xmlns", "http://example.com/abc/dss/pct/v1.0");

        writer.WriteAttributeString("requestId", name);
        writer.WriteAttributeString("timestampUtc", "2015-02-19T09:25:30.7138903Z");

        writer.WriteStartElement("StorageItems");

因此,当我创建PrincetonStorageRequest元素时,我指定了一个名称空间URI。

编辑:只是为了检查,这是创建的XML,但我必须添加代码来编写结束元素:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<PrincetonStorageRequest xmlns="http://example.com/abc/dss/pct/v1.0" requestId="RequestOut_MAG_Test_02" timestampUtc="2015-02-19T09:25:30.7138903Z">
<StorageItems/>