我正在使用linq.xml通过xelement创建xml。 我的雇佣关系是这样的事情
我想要这个架构 2 海峡
这是我的模式生成代码
XNamespace ns = XNamespace.Get("urn:APISchema.xsd");
root = new XElement(ns + "Foo");
root.Add(new XElement("version", "2"));
root.Add(new XElement("foochild", "str"));
但结果架构是
<Foo xlmns="urn:APISchema.xsd">
<version xlmns="">2</version>
<foochild xlmns="">str</foochild>
</Foo>
任何想法为什么这样的问题为什么它将xlmn附加到root childs??
答案 0 :(得分:2)
root.Add(new XElement(namespace + "foo", "str"))
编辑:进一步搜索SO时,this question似乎正在解决同样的问题。
答案 1 :(得分:0)
你添加了元素'usr:APISchema.xsd :: Foo'两个没有命名空间的元素。结果XML是预期的。您必须将名称空间添加到每个添加的元素:root.Add(new XElement(namespace + "foochild")
。
答案 2 :(得分:0)
XNamespace myNameSpace = XNamespace.Get("urn:APISchema.xsd");
root = new XElement(myNameSpace + "Foo",
new XElement(myNameSpace + "foo", "str"));
IMO这更容易阅读。但正如理查德所说,你只需要添加命名空间。
答案 3 :(得分:0)
XNamespace myNamespace = XNamespace.Get("urn:APISchema.xsd");
root = new XElement(myNamespace + "Foo",
new XElement(myNamespace + "version", "2"),
new XElement(myNamespace + "foochild", "str"));
给它一个镜头,它应该为你做的。