我在生成 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));
这段代码,给定一个 XmlWriter
和 XDocument
给我输出:
<?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/