Есть ли способ установить пространство имен по умолчанию для запроса из XDocument? - PullRequest
2 голосов
/ 08 августа 2011

Я не хочу включать xmlns + "ElementName" для каждого имени элемента?

XDocument xml = XDocument.Load(@"C:\file.xml");
XNamespace xmlns = "http://www.com/namespace";
var vehicles = from vehicle in xml.Descendants(xmlns + "Element")
               select vehicle.Element(xmlns + "Item")
};

Ответы [ 3 ]

3 голосов
/ 08 августа 2011

К сожалению, это то, что вы должны делать при работе с LINQ to XML. Вы должны предоставлять пространство имен каждый раз, когда запрашиваете документ для определенного элемента.

0 голосов
/ 22 октября 2014

Даже уже слишком поздно, но, возможно, это поможет кому-то другому, как я!

Вы можете добавить метод расширения для использования в качестве оболочки для встроенного!

Вот так:

public static class XDoncumentExtentions
{
    private static string DefaultNamespace = "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}";
    public static IEnumerable<XElement> DescendantsSimple(this XContainer me, string simpleName)
    {
        return me.Descendants(string.Format("{0}{1}", DefaultNamespace, simpleName));
    }

    public static IEnumerable<XElement> ElementsSimple(this XContainer me, string simpleName)
    {
        return me.Elements(string.Format("{0}{1}", DefaultNamespace, simpleName));
    }

    public static XElement ElementSimple(this XContainer me, string simpleName)
    {
        return me.Element(string.Format("{0}{1}", DefaultNamespace, simpleName));
    }
}
0 голосов
/ 08 августа 2011

Похоже, Скотт Хансельман написал несколько заметок об этом некоторое время назад.Не совсем то, что вы ищете, может быть (есть некоторые примеры Linq to XML немного ниже в посте), но вот ссылка, так или иначе: http://www.hanselman.com/blog/GetNamespacesFromAnXMLDocumentWithXPathDocumentAndLINQToXML.aspx

См. Также этот вопрос SO: Как установить пространство имен XML по умолчанию для XDocument

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