代码之家  ›  专栏  ›  技术社区  ›  Usman Masood

向C中的根Xelement元素添加/创建命名空间#

  •  2
  • Usman Masood  · 技术社区  · 17 年前

    我正在通过Xelement使用linq.xml创建XML。 我的雇佣关系是这样的

    我想要这个模式 二 STR

    这是我的模式生成代码

     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附加到根孩子身上?

    4 回复  |  直到 14 年前
        1
  •  2
  •   Community Mohan Dere    9 年前
    root.Add(new XElement(namespace + "foo", "str"))
    

    编辑:进一步搜索后, this question 似乎也在解决同样的问题。

        2
  •  0
  •   Remus Rusanu    17 年前

    您向元素'usr:apischema.xsd::foo'添加了两个不带命名空间的元素。结果XML是预期的XML。必须向每个添加的元素添加命名空间: root.Add(new XElement(namespace + "foochild") .

        3
  •  0
  •   David Yancey    17 年前
    XNamespace myNameSpace = XNamespace.Get("urn:APISchema.xsd");
            root = new XElement(myNameSpace + "Foo",
                                    new XElement(myNameSpace + "foo", "str"));
    

    在我看来这更容易理解。但是正如Richard所说,您只需要添加名称空间。

        4
  •  0
  •   Alexander Kahoun    17 年前
    XNamespace myNamespace = XNamespace.Get("urn:APISchema.xsd");
    root = new XElement(myNamespace + "Foo",
        new XElement(myNamespace + "version", "2"),
        new XElement(myNamespace + "foochild", "str"));
    

    试一试,它会帮你变戏法的。

    推荐文章