C# 创建xml文档时的默认命名空间
是否可以使用XmlDocument.CreateElement()和XmlNode.AppendChild()创建子级,而不指定名称空间,并使用“默认”名称空间 当前,如果我创建了一个具有名称空间的根节点,并且没有在每个子节点上指定名称空间,那么输出xml将定义一个空白名称空间 下面是如果我没有为我创建的每个元素指定名称空间将生成的内容。是否有一个快捷方式,我不必每次都指定名称空间C# 创建xml文档时的默认命名空间,c#,xml,C#,Xml,是否可以使用XmlDocument.CreateElement()和XmlNode.AppendChild()创建子级,而不指定名称空间,并使用“默认”名称空间 当前,如果我创建了一个具有名称空间的根节点,并且没有在每个子节点上指定名称空间,那么输出xml将定义一个空白名称空间 下面是如果我没有为我创建的每个元素指定名称空间将生成的内容。是否有一个快捷方式,我不必每次都指定名称空间 <root xmlns="http://example.com"> <child1 xmln
<root xmlns="http://example.com">
<child1 xmlns="">
<child2 />
</child1>
</root>
如果您已经创建了XML文档,并且为层次结构中的每个元素指定了相同的名称空间,如下所示:
XmlDocument doc = new XmlDocument();
const string xmlNS = "http://www.example.com";
XmlElement root = doc.CreateElement("root", xmlNS);
doc.AppendChild(root);
XmlElement child1 = doc.CreateElement("child1", xmlNS);
root.AppendChild(child1);
child1.AppendChild(doc.CreateElement("child2", xmlNS));
doc.Save(@"D:\test.xml");
然后您将获得以下输出文件:
<root xmlns="http://www.example.com">
<child1>
<child2 />
</child1>
</root>
节点上的名称空间沿层次结构向下继承,除非子元素明确定义了其他内容
如果您使用doc.CreateElement
创建一个新的XmlElement,并且没有指定XML名称空间,那么当然,该新元素将有一个空白名称空间,因此它将被序列化到您拥有的XML文档中
我不知道有什么方法来指定一个默认的命名空间,每当你创建一个新的元素时,如果你指定一个元素,元素将使用那个命名空间——如果你不指定一个,那就是空白命名空间。< /P> < P>如果你使用.NET 3.5,我建议使用LINQtoXML,(System .x.LINQ)。使用XDocument、XElement和XAttribute类
但是marc_的回答是正确的,名称空间是继承的。Erm,marc_的回答没有说名称空间是继承的。它说您必须为创建的每个XML元素手动指定它。
<root xmlns="http://www.example.com">
<child1>
<child2 />
</child1>
</root>