2

私はこのように取得する必要があるC#でコードを書きたいです。

<Email version="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"> </Email>

私はこれを試しましたが、正確ではありません。

XmlTextWriter writer = new XmlTextWriter("D:\\nefe.xml", System.Text.Encoding.UTF8);
writer.WriteStartDocument();
writer.WriteStartElement("Email");
writer.WriteString("version=2.00  xmlns=Http://www.portalfiscal.inf.br/nfe");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();

このコードが次のように出力します

 <Email>version=2.00 xmlns=Http://www.portalfiscal.inf.br/nfe</Email> 
4

2 に答える 2

11

そうです - あなたが呼び出しWriteStringているのは、テキスト コンテンツを書き込む です。サンプル XML にはattributesが含まれているため、次を使用する必要がありますWriteAttributeString

writer.WriteAttributeString("version", "2.00");
writer.WriteAttributeString("xmlns", "http://www.portalfiscal.inf.br/nfe");

でも使う必要あるXmlWriter個人的には、可能な場合は LINQ to XML を使用することをお勧めします。XmlWriter簡単に処理できる巨大なドキュメントを書くのには適していませんが、適度なサイズの単純なドキュメントを作成しようとしているだけの場合は、はるかにクリーンです。

XNamespace ns = "http://www.portalfiscal.inf.br/nfe";
var doc = new XDocument(new XElement(ns + "Email",
                                     new XAttribute("xmlns", ns.ToString()),
                                     new XAttribute("version", "2.00")));
doc.Save("nefe.xml");

どうしても を使用する場合XmlWriterusingステートメントを使用して、例外がスローされた場合でも出力が常に閉じられるようにする必要があります。

于 2012-12-17T16:32:40.777 に答える
4

あなたが探している方法XmlTextWriterWriteAttributeString

XmlTextWriter writer = new XmlTextWriter("D:\\nefe.xml", System.Text.Encoding.UTF8);
writer.WriteStartDocument();
writer.WriteStartElement("Email");
writer.WriteAttributeString("version","2.00");
writer.WriteAttributeString("xmlns","Http://www.portalfiscal.inf.br/nfe");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();

実際の例: http://rextester.com/EZU91552

于 2012-12-17T16:32:28.993 に答える