XmlDocument从根元素中删除XMLNS

时间:2011-07-14 00:44:13

标签: c# xmldocument createelement

这是新的,希望得到我的XmlDocument的一些帮助。是否可以在我的根元素中包含字符串数据并删除 xmlns = 属性?我正在寻找这样的东西:

<Rulebase author=yadda datetime=bingbang version=1.x </Rulebase>

当我尝试通过执行以下操作来使用我的字符串数据时:

xmlDom.AppendChild(xmlDom.CreateElement("", "Rulebase", data));
XmlElement xmlRoot = xmlDom.DocumentElement;

最终看起来像这样:

<Rulebase xmlns="version=0 author=username date=7/13/2011 </Rulebase>

它还会将 xmlns =“” 附加到我的所有其他节点。

1 个答案:

答案 0 :(得分:2)

您正在使用的CreateElement重载使用前缀作为第一个参数,本地名称作为第二个参数,名称空间作为第三个参数。如果您不想要名称空间,请不要使用此重载。只需使用以本地名称作为唯一参数的那个。然后将您的数据分别添加为子元素和属性。

var xmlDom = new XmlDocument();
XmlElement root = xmlDom.CreateElement("Rulebase");
xmlDom.AppendChild(root);
XmlElement data = xmlDom.CreateElement("Data");
root.AppendChild(data);

XmlAttribute attribute = xmlDom.CreateAttribute("author");
attribute.Value = "username";
data.Attributes.Append(attribute);

attribute = xmlDom.CreateAttribute("date");
attribute.Value = XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.RoundtripKind);
data.Attributes.Append(attribute);

Console.WriteLine(xmlDom.OuterXml);

创建(添加格式)

<Rulebase>
    <Data author="username" date="2011-07-13T22:44:27.5488853-04:00" />
</Rulebase>

使用XmlDocument生成XML非常繁琐。 .NET中有许多更好的方法,例如XmlSerializerDataContractSerializer。您还可以使用Linq-to-Xml和XElement。或者您可以使用XmlWriter.Create()。很多选择。