XmlDocument 从根元素中删除 XMLNS

发布于 2024-11-24 01:28:03 字数 564 浏览 2 评论 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="" 附加到我的所有其他节点。

New here, looking to get a little help with my XmlDocument. Is it possible to have string data in my root element AND remove the xmlns= attribute from being shown? I'm looking for something like this:

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

When I try to use my string data by doing:

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

It ends up looking like this:

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

and it also appends xmlns="" to all my other nodes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

澜川若宁 2024-12-01 01:28:04

您使用的 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()。有很多选择。

The CreateElement overload you're using takes a prefix as it's first argument, local name as second, and namespace as third. If you don't want a namespace, don't use this overload. Just use the one that takes a local name as the one and only argument. Then add your data separately as child elements and attributes.

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);

Creates (formatting added)

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

Using XmlDocument to generate XML is pretty tedious though. There are many better ways in .NET, like XmlSerializer and DataContractSerializer. You can also use Linq-to-Xml and XElement. Or you can use an XmlWriter.Create(). Lots of options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文