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 に答える