Как создать Xml с несколькими пейзажами имен, используя XDocument - PullRequest
1 голос
/ 21 мая 2011

Я хотел бы создать документ с несколькими пространствами имен (см. Ниже XML). Как я могу сделать это с помощью XDocument? Мой окончательный результат должен быть следующим:

<?xml version="1.0" encoding="utf-8"?>
<a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://schemas.zune.net/catalog/apps/2008/02">
  <a:link rel="prev" type="application/atom+xml" href="myUrl" />
  <a:link rel="next" type="application/atom+xml" href="myUrl" />
  <a:link rel="self" type="application/atom+xml" href="myUrl" />
  <a:updated>2008-05-20T22:50:46.7932864Z</a:updated>

Вот код, который у меня есть.

    XNamespace nsW3Atom = "http://www.w3.org/2005/Atom";
    XNamespace nsOs = "http://a9.com/-/spec/opensearch/1.1/";
    XNamespace nsZune = "http://schemas.zune.net/calatog/apps/2008/02";

    XDocument doc =
        new XDocument(
            // new XDeclaration("1.0", "utf-8", "no"),
            new XElement("feed",
                new XAttribute("a", nsW3Atom),
                new XAttribute("os", nsOs),
                new XAttribute("os2", nsZune),
                new XElement(XNamespace.Xmlns + "link", new XAttribute("rel", "prev"), new XAttribute("type", "application/atom+xml")),
                new XElement(XNamespace.Xmlns + "link", new XAttribute("rel", "next"), new XAttribute("type", "application/atom+xml")),
                new XElement(XNamespace.Xmlns + "link", new XAttribute("rel", "self"), new XAttribute("type", "application/atom+xml"))));

Заранее спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 21 мая 2011
 XNamespace a="http://www.w3.org/2005/Atom";
 XNamespace os = "http://a9.com/-/spec/opensearch/1.1/";
 XNamespace def = "http://schemas.zune.net/catalog/apps/2008/02";

 var doc =
     new XDocument(new XElement(a + "feed", 
                         new XAttribute(XNamespace.Xmlns + "a", a),
                         new XAttribute(XNamespace.Xmlns + "os", os),
                         new XAttribute("xmlns", def)));

тогда, если вы хотите использовать пространство имен, добавьте к любому элементу префикс +

0 голосов
/ 21 мая 2011

При создании атрибутов используйте префикс xmlns:.

            new XAttribute("xmlns:a", nsW3Atom),
            new XAttribute("xmlns:os", nsOs),
            new XAttribute("xmlns:os2", nsZune)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...