【问题标题】:generate Xml file in particular format生成特定格式的 XML 文件
【发布时间】:2012-01-20 08:09:47
【问题描述】:

我有这段代码可以从 IQueryable 变量查询生成 Xml:

XDocument data = XDocument.Load(HttpContext.Current.Server
                                           .MapPath("~/XMLFile.xml"));
XElement newTest = new XElement("TestForPackage",
                      from Tests in query.AsEnumerable()
                      select new  XElement("Tests",
                             new XElement("Dep_Code", Tests.Dep_Code),
                             new XElement("Dep_Name", Tests.Dep_Name),
                             new XElement("Test_Code", Tests.Test_Code),
                             new XElement("Test_Name", Tests.Test_Name),
                             new XElement("Sub_Test_Code", Tests.Sub_Test_Code),
                             new XElement("Sub_Test_Code", Tests.Sub_Test_Name)
                      ));

data.Element("TestsForPackage").Add(newTest);
data.Save(HttpContext.Current.Server.MapPath("~/XMLFile.xml"));

它生成以下格式的xml:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<TestsForPackage>
  <Test>
    <Dep_Code>BIOCH</Dep_Code>
    <Dep_Name>BIOCHEMISTRY</Dep_Name>
    <Test_Code>BGPP</Test_Code>
    <Test_Name>BLOOD GLUCOSE P.P.</Test_Name>
    <Sub_Test_Code />
    <Sub_Test_Name />
  </Test>

  <Test>
     <Dep_Code>BIOCH</Dep_Code>
     <Dep_Name>BIOCHEMISTRY</Dep_Name>
     <Test_Code>BGPP</Test_Code>
     <Test_Name>BLOOD GLUCOSE P.P.</Test_Name>
     <Sub_Test_Code />
     <Sub_Test_Name />
  </Test>

  <Test>
     <Dep_Code>BIOCH</Dep_Code>
     <Dep_Name>BIOCHEMISTRY</Dep_Name>
     <Test_Code>BGPP</Test_Code>
     <Test_Name>BLOOD GLUCOSE P.P.</Test_Name>
     <Sub_Test_Code />
     <Sub_Test_Name />
  </Test>      
</TestsForPackage>

但是,我需要生成这种格式的xml文件:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<TestsForPackage>
  <Test>
    <Dep_Code>BIOCH</Dep_Code>
    <Dep_Name>BIOCHEMISTRY</Dep_Name>
    <Test_Code>BGPP</Test_Code>
    <Test_Name>BLOOD GLUCOSE P.P.</Test_Name>
    <Sub_Test_Code />
    <Sub_Test_Name />
  </Test>

  <Test>
     <Dep_Code>BIOCH</Dep_Code>
     <Dep_Name>BIOCHEMISTRY</Dep_Name>
     <Test_Code>BGPP</Test_Code>
     <Test_Name>BLOOD GLUCOSE P.P.</Test_Name>
     <Sub_Test_Code />
     <Sub_Test_Name />
  </Test>

  <Test>
    <Dep_Code>BIOCH</Dep_Code>
     <Dep_Name>BIOCHEMISTRY</Dep_Name>
     <Test_Code>BGPP</Test_Code>
     <Test_Name>BLOOD GLUCOSE P.P.</Test_Name>
     <Sub_Test_Code />
     <Sub_Test_Name />
  </Test>

</TestsForPackage>

我知道我犯了一些小错误,但我不知道是什么。

【问题讨论】:

  • 预期输出和实际输出之间的差异并不明显——部分原因是您发布了带有大量空白的非常大的样本。另请注意,据我所知,这个问题与 ASP.NET 无关。
  • 我已经使用 linq to sql 生成了 Xml 文件,这就是为什么我将标签设为 asp.net
  • LINQ to SQL 和 ASP.NET 是完全不同的!仅仅因为您碰巧在某处使用 ASP.NET 并不意味着问题真的是关于 ASP.NET。看起来它可能只是一个 LINQ to XML 问题,但我无法发现预期格式与您当前得到的格式之间的区别。请澄清 - 并阅读tinyurl.com/so-hints
  • 我能看到的两个 XML 文件之间的唯一区别是第二个文件中有一个额外的回车符。 XML 是关于语义和意义的——空白在很大程度上是无关紧要的。
  • @jon =对不起,乔恩,我是新来的,我会一直听取你的建议

标签: .net xml linq-to-xml


【解决方案1】:

XML 都是关于语义的,它是一种传输和交换数据的机制。 XML 解析器不关心文件中的空格。出于这个原因,XML 编写器不允许您控制空白输出(除了让您选择漂亮打印)。

如果您想具体说明 XML 输出中的换行符,您将不得不自己使用字符串操作来操作 XML 输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多