这是新的,希望得到我的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 =“” 附加到我的所有其他节点。
答案 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中有许多更好的方法,例如XmlSerializer
和DataContractSerializer
。您还可以使用Linq-to-Xml和XElement
。或者您可以使用XmlWriter.Create()
。很多选择。