碰到一個奇怪的問題,為什麼我寫這個節點,怎麼都關閉不了元素:
XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = false; settings.NewLineOnAttributes = false; XmlWriter writer = XmlWriter.Create("booknew.xml", settings); writer.WriteStartElement("DBaseLink"); writer.WriteAttributeString("Confidentiality", "Outsourcer"); writer.WriteAttributeString("Type", "Bug"); writer.WriteAttributeString("Database", "AXSE"); writer.WriteAttributeString("Value", "1123456"); writer.WriteEndElement(); // close DBaseLink //clean up writer.Flush(); writer.Close();
太詭異了,每次都是這個結果
<?xml version="1.0" encoding="utf-8" ?>
<DBaseLink Confidentiality="Outsourcer" Type="Bug" Database="AXSE" Value="1123456" />
就是沒有關閉元素的/DBaseLink.
PS: 後來有博友回答了這個問題,當一個element 只有attribute 沒有value的時候,就是那樣結尾的。
加入一個XML規則的解釋
規則6:所有的空標識也必須被關閉
空標識就是標識對之間沒有內容的標識。比如<br>,<img>等標識。在XML中,規定所有的標識必須有結束標識,針對這樣的空標識,XML中處理的方法是在原標識最後加/,就可以了。例如:
<br>應寫為<br />;
<META name="keywords" content="XML, SGML, HTML">應寫為<META name="keywords" content="XML, SGML, HTML" />;
<IMG src= "cool.gif">應寫為<IMG src= "cool.gif" />