如何编写这种格式的xml文件?

时间:2012-12-17 16:30:34

标签: c# xml

我想在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> 

2 个答案:

答案 0 :(得分:11)

是的 - 您正在调用WriteString来编写文本内容。您的示例XML包含属性,因此您应该使用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");

如果你坚持使用XmlWriter,你应该使用using语句来确保即使抛出异常也总是关闭输出。

答案 1 :(得分:4)

您在XmlTextWriter上寻找的方法是WriteAttributeString

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