我想在一个有效的XML文件中设置根元素的命名空间:
XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "no"));
XNamespace ns = @"http://mynamespace.de/test";
doc.Add(new XElement(ns + "RootElement"));
doc.Root.Add(new XElement("SomeChildElement"));
但是直接子元素确实有一个空的xmlns
属性。我怎么能避免这种情况?我只想在根元素中设置名称空间。
答案 0 :(得分:2)
但是直接子元素确实有一个空的xmlns属性。我怎么能避免这种情况?
您也可以为子元素指定命名空间:
doc.Root.Add(new XElement(ns + "SomeChildElement"));
重点是元素继承了最接近的xmlns=...
命名空间规范。当您使用new XElement("SomeChildElement")
实际创建具有空命名空间URI的元素时,因此需要xmlns=""
才能为其提供正确的命名空间。如果你想:
<RootElement xmlns="http://mynamespace.de/test">
<SomeChildElement />
</RootElement>
然后你真的想要一个SomeChildElement
元素与根元素具有相同的命名空间 - 这就是我答案顶部的代码会给你的。
请注意,顺便说一句,您不需要命名空间的逐字字符串文字 - 常规字符串文字很好,因为URI不包含任何反斜杠或新行:
XNamespace ns = "http://mynamespace.de/test";