2012-01-20 48 views
-5

我有這樣的代碼,以從IQueryable可變查詢生成XML的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> 

我知道我犯了一些小錯誤但我不知道它是什麼。

+6

預期輸出與實際輸出之間的差異並不明顯 - 部分原因是因爲您發佈了大量空白的非常大的樣本。另外請注意,就我所見,這個問題與ASP.NET無關。 –

+0

我已經通過使用LINQ to sql生成了Xml文件,這就是爲什麼我給標籤作爲asp.net – Vishwajeet

+2

LINQ to SQL和ASP.NET是完全不同的!僅僅因爲你碰巧在某個地方使用了ASP.NET,並不意味着這個問題就是關於ASP.NET的問題。它看起來可能只是一個LINQ to XML的問題,但我無法發現預期格式與您目前獲得的內容之間的區別。請澄清 - 並閱讀http://tinyurl.com/so-hints –

回答

1

XML是關於語義的,它是一種傳輸和交換數據的機制。 XML解析器不關心文件中的空白。出於這個原因,XML編寫者不允許你控制空白輸出(除了讓你的選項漂亮)。

如果您想具體指出XML輸出中換行符的位置,您將不得不使用字符串操作自己操作XML輸出。