0

新来的,希望对我的 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=""附加到我的所有其他节点。

4

1 回答 1

3

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(). 很多选择。

于 2011-07-14T02:48:29.203 回答