1

我想用 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");

但我越来越

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

4

1 回答 1

3

从您的 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/>

于 2015-05-28T10:06:32.303 回答