今天做開發時碰到的XmlDocument 創新對象時, 產生 xmlns="" 的,經過分析總結了問題所在,有需要朋友參考一下,可能能幫助你解決這個問題。
1. 讀取時,應該添加NameSpace.
代碼如下 復制代碼 var exclDef = excl.SelectSingleNode(@"ns:worksheet/ns:sheetData", excl.GetNameSpaceManager("ns"));
2. 如果創建 節點,沒有指明 NamespaceURI , 則會生成 xmlns="" , 其原因,參考:
/post_read.asp?BlogID=2524806&PostID=21711977
如果 ABC 三級的 NameSpaceURI 分別是 XYY , 那麼, 生成的 ABC 的 NameSpaceURI分別是 AB空, C 不會生成 NameSpaceURI , 因為, C和其父項具有相同的 NameSpaceURI .
所以在創建 節點時, 為了不出現 NameSpaceURI , 請保持和節點父項相同的 NameSpaceURI .
var si = e.OwnerDocument.CreateElement("si", e.NamespaceURI); e.AppendChild(si);
另外, 創新 屬性時, 不要指定 NameSpaceURI , 即 生成的 Xml 就沒有特定的 NameSpaceURI .
var r = excl.CreateAttribute("r");