C# 產生XML空元素/空節點自動換行解決方案

來源:互聯網
上載者:User

標籤:

使用DataSet可以直接輸出XML,並可指定是否帶有Schema: 

ds.WriteXml(XMLFile,XmlWriteMode.WriteSchema  )  

不過,這樣將不會輸出值為Null的欄位,如:

你可能希望結果是這樣: 

<a>1</a>  <b>2</b>  <c></c> 

但結果為:

<a>1</a>  <b>2</b>  

c沒有輸出在XML檔案中,其實我覺得這樣更合理,否則,如何區分null和""呢?如果希望輸出c,那隻能通過XmlDocument自己寫了:

//初始化一個xml執行個體  XmlDocument XmlDoc = new XmlDocument();  XmlNode xmlnode = XmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");  XmlDoc.AppendChild(xmlnode);  //建立xml的根節點  XmlElement rootElement = XmlDoc.CreateElement("Rows");  //將根節點加入到xml檔案中(AppendChild)  XmlDoc.AppendChild(rootElement);    foreach (DataRow dr in ds.Tables[0].Rows)  {      XmlElement xmlRow = XmlDoc.CreateElement("Row");      rootElement.AppendChild(xmlRow);      foreach (DataColumn col in ds.Tables[0].Columns)      {          XmlElement xmlCol = XmlDoc.CreateElement(col.ColumnName);          xmlCol.InnerText = dr[col].ToString();          xmlRow.AppendChild(xmlCol);      }  }    XmlDoc.Save(file);  

空節點顯示出來了,但是,另一個問題出現了,空節點換行了,成了這樣:

<a>1</a>  <b>2</b>  <c>  </c>

雖然這樣也符合XML標準,使用C#也很容易可以讀取該XML,但是對於一些有審美潔癖的人和已經寫好的XML匯入程式來說,總希望能改進一下,將空元素放到一行裡邊去。有人說使用XmlTextWriter 的Formatting,即:

using (XmlTextWriter xtw = new XmlTextWriter(file, null))  {      xtw.Formatting = Formatting.None;      XmlDoc.Save(xtw);  }  

但是這樣一來,XML裡所有內容都不換行全連在一起了,可讀性更差。實際上值為NULL或者""時,不要給InnerText賦值就行了:

if (dr[col].ToString() != null && dr[col].ToString() != "")  {      xmlCol.InnerText = dr[col].ToString();  }  

輸出:

<a>1</a>  <b>2</b>  <c/>  

 

C# 產生XML空元素/空節點自動換行解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.