c# - 使用 System.Xml.Linq API 设置 XML 命名空间

标签 c# xml linq-to-xml xnamespace

我在生成 XML 时遇到了问题:

<Root xmlns:brk="http://somewhere">
<child1>
    <brk:node1>123456</brk:node1>
    <brk:node2>500000000</brk:node2>
</child1>
</Root>

这段代码让我了解了大部分内容,但我无法在节点前面获取“brk”命名空间;

 var rootNode = new XElement("Root");
 rootNode.Add(new XAttribute(XNamespace.Xmlns + "brk", "http://somewhere"));

 var childNode = new XElement("child1");
 childNode.Add(new XElement("node1",123456));
 rootNode.Add(childNode);

我已经试过了:

XNamespace brk = "http://somewhere";
childNode.Add(new XElement(brk+"node1",123456));

还有这个

XNamespace brk = "http://somewhere";
childNode.Add(new XElement("brk:node1",123456));

但两者都会导致异常。

最佳答案

您快完成了,但是您在第一个代码示例中犯了一个简单的错误。我相信这就是您所需要的:

XNamespace brk = "http://somewhere.com";
XElement root = new XElement("Root",
    new XAttribute(XNamespace.Xmlns + "brk", "http://somewhere.com"));

XElement childNode = new XElement("child1");
childNode.Add(new XElement(brk + "node1",123456));
root.Add(childNode);

这里的主要区别在于我将 node1 添加到 childNode 的位置,如下所示:

childNode.Add(new XElement(brk + "node1",123456));

这段代码,给定一个 XmlWriterXDocument 给我输出:

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns:brk="http://somewhere.com">
  <child1>
    <brk:node1>123456</brk:node1>
  </child1>
</Root>

有关使用 MSDN 的详细信息,请参阅 XNamespace

关于c# - 使用 System.Xml.Linq API 设置 XML 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529007/

相关文章:

mysql - 在选择查询的过程中读取 XML

c# - LINQ to XML 可选元素查询

c# - XDocument、XPath 和命名空间的奇怪之处

xml - 查看满足XPATH的下一个节点以定义行为

c# - 无法返回对象

c# - C++ 混合模式应用程序中的内存管理

c# - 使无效的 XAML 阻止编译

xml - 如何强制子元素在 XSD 中具有值?

c# - 如何将 XElement 转换为 XComment (C#)

c# - 减少 Update 和 Sum Query C# Access DB 的时间?