генерировать XML-файл в определенном формате - PullRequest
0 голосов
/ 20 января 2012

У меня есть этот код для генерации XML из запроса переменной IQueryable:

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>

Я знаю, что совершаю небольшую ошибку, но не знаю, что это такое.

1 Ответ

1 голос
/ 20 января 2012

XML - это все о семантике, это механизм передачи и обмена данными. Синтаксический анализатор XML не заботится о пробелах в вашем файле. По этой причине авторы XML не позволяют вам управлять выводом пробелов (кроме того, что вы можете использовать функцию pretty-print).

Если вы хотите быть точным в отношении того, где разрывы строк в вашем выводе XML, вам придется самостоятельно манипулировать выводом XML, используя строковые манипуляции.

...