0

我需要以下结果:

<?xml version="1.0" encoding="utf-8"?>
<LIEFERUNG-AUSWI xmlns:aw="http://www.bundesbank.de/xmw/auswi/2003-01-01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bbk="http://www.bundesbank.de/xmw/2003-01-01" xsi:schemaLocation="http://www.bundesbank.de/xmw/auswi/2003-01-01 BbkXmwAuswi.xsd" version="1.0" erstellzeit="2013-11-06T15:36:44" stufe="Test" xmlns="http://www.bundesbank.de/xmw/auswi/2003-01-01">
  <ABSENDER xmlns="http://www.bundesbank.de/xmw/2003-01-01">
    <aw:FIRMENNR>00004711</aw:FIRMENNR>
...

我的代码如下:

writer.WriteStartElement("LIEFERUNG-AUSWI", "http://www.bundesbank.de/xmw/auswi/2003-01-01");
writer.WriteAttributeString("xmlns", "aw", null, "http://www.bundesbank.de/xmw/auswi/2003-01-01");
writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
writer.WriteAttributeString("xmlns", "bbk", null, "http://www.bundesbank.de/xmw/2003-01-01");
writer.WriteAttributeString("xsi", "schemaLocation", null, "http://www.bundesbank.de/xmw/auswi/2003-01-01 BbkXmwAuswi.xsd");
writer.WriteAttributeString(null, "version", null, "1.0");
writer.WriteAttributeString(null, "erstellzeit", null, Dat_DatZeit);
writer.WriteAttributeString(null, "stufe", null, "Test");

// Start-Tag von Absender
writer.WriteStartElement("ABSENDER");
writer.WriteAttributeString("xmlns", "bbk", null, "http://www.bundesbank.de/xmw/2003-01-01");
writer.WriteElementString("aw", "FIRMENNR", null, "00004711");

但这给了我以下信息:

<?xml version="1.0" encoding="utf-8"?>
<LIEFERUNG-AUSWI xmlns:aw="http://www.bundesbank.de/xmw/auswi/2003-01-01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bbk="http://www.bundesbank.de/xmw/2003-01-01" xsi:schemaLocation="http://www.bundesbank.de/xmw/auswi/2003-01-01 BbkXmwAuswi.xsd" version="1.0" erstellzeit="2013-11-06T15:36:44" stufe="Test" xmlns="http://www.bundesbank.de/xmw/auswi/2003-01-01">
  <ABSENDER xmlns:bbk="http://www.bundesbank.de/xmw/2003-01-01">
    <aw:FIRMENNR>00004711</aw:FIRMENNR>

我必须改变什么才能xmlns:bbk成为唯一的xmlns?我从来没有在 XML 中做过什么,所以我实际上只是在尝试,但我尝试的所有方法都没有奏效,要么我收到一条错误消息,要么结果错误......这是我尝试过的不同之处:

// Start-Tag von Absender
writer.WriteStartElement("ABSENDER", "http://www.bundesbank.de/xmw/2003-01-01");

这给了我一个错误的结果......

4

1 回答 1

2

您必须更改以下行:

writer.WriteStartElement("ABSENDER");

至:

writer.WriteStartElement("", "ABSENDER","http://www.bundesbank.de/xmw/2003-01-01");

下一个是不必要的。

我可能会补充一点,您的 XML 似乎有点过于复杂,名称空间经常被重新定义。比如你的根标签,http://www.bundesbank.de/xmw/auswi/2003-01-01是默认的命名空间,但也叫aw ,后面会用到你叫bbk的命名空间,没有它的名字……也许你应该考虑在这个过程中简化你的 XML。

除此之外,在发布之前不测试您的代码通常会使您的问题在 SO 上结束。我为此推荐LinqPad。这是我用来找到你的答案的。

于 2013-11-06T15:22:27.143 回答