добавление / создание пространства имен для корневого элемента xelement в c # - PullRequest
2 голосов
/ 22 мая 2009

Я создаю xml, используя linq.xml через xelement. моя наёмница такая вещь

Я хочу эту схему 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 к корневым дочерним элементам ...?

Ответы [ 4 ]

2 голосов
/ 22 мая 2009
root.Add(new XElement(namespace + "foo", "str"))

Редактировать: при дальнейшем поиске SO этот вопрос , похоже, решает ту же проблему.

0 голосов
/ 23 мая 2009
XNamespace myNamespace = XNamespace.Get("urn:APISchema.xsd");
root = new XElement(myNamespace + "Foo",
    new XElement(myNamespace + "version", "2"),
    new XElement(myNamespace + "foochild", "str"));

Дайте этому шанс, он должен помочь вам.

0 голосов
/ 22 мая 2009
XNamespace myNameSpace = XNamespace.Get("urn:APISchema.xsd");
        root = new XElement(myNameSpace + "Foo",
                                new XElement(myNameSpace + "foo", "str"));

IMO Это легче читать. Но, как сказал Ричард, вам просто нужно добавить пространство имен.

0 голосов
/ 22 мая 2009

Вы добавили к элементу 'usr: APISchema.xsd :: Foo' два элемента без пространства имен. Полученный XML является ожидаемым. Вы должны добавить пространство имен к каждому добавленному элементу: root.Add(new XElement(namespace + "foochild").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...