使用Xelement时如何换行

问题描述

如果问题很奇怪,您好,抱歉,英语不好。 我的代码

xws.OmitXmlDeclaration = true;

using (XmlWriter xw = XmlWriter.Create(sb,xws))
{
    string lb = "\r\n";
    XElement I11 = new XElement("I11",lb,new XElement("I11_TIPAS","2"),new XElement("I11_PAV","pav"),new XElement("I11_KODAS_IS","985"),from iseip in eip
                                select new XElement("I12",new XElement("DI12_BAR_KODAS",iseip.DI12_BAR_KODAS),new XElement("I12_KODAS_SS",iseip.I12_KODAS_SS),new XElement("I12_KIEKIS",iseip.I12_KIEKIS),new XElement("I12_FRAKCIJA",iseip.I12_FRAKCIJA),lb),lb
        );
    I11.Save(xw);
}
System.IO.File.WriteallText("bbb.eip",sb.ToString());

输出

output

需要这样:

need like this

每个I12节点必须换行。问题出在哪里?

解决方法

尝试以下操作:

            XmlWriterSettings xws = new XmlWriterSettings();
            xws.OmitXmlDeclaration = true;
            xws.Indent = true;
            List<EIP> eip = new List<EIP>();
            using (XmlWriter xw = XmlWriter.Create("bbb.eip",xws))
            {
                XElement I11 = new XElement("I11",new object[] {
                                            new XElement("I11_TIPAS","2"),new XElement("I11_PAV","pav"),new XElement("I11_KODAS_IS","985")
                });
                foreach(var iseip in eip)
                {

                    XElement I12 = new XElement("I12",new object[] {
                          new XElement("DI12_BAR_KODAS",iseip.DI12_BAR_KODAS),new XElement("I12_KODAS_SS",iseip.I12_KODAS_SS),new XElement("I12_KIEKIS",iseip.I12_KIEKIS),new XElement("I12_FRAKCIJA",iseip.I12_FRAKCIJA)
                    });
                    I11.Add(I12);

                }
                I11.Save(xw);
            }
 
        }
        public class EIP
        {
            public string DI12_BAR_KODAS { get;set;}
            public string I12_KODAS_SS { get;set;}
            public string I12_KIEKIS { get;set;}
            public string I12_FRAKCIJA { get;set;}
                         
        }
,

尝试以下操作。

SSHPASS

XMLDocument以正确的格式保存。