Комментарии 5
xpath гораздо удобнее
Мне кажется это стало уже ооочень избитой темой. Я сам в свое время писал о том как подобное делается — как часть обзора применения слова dynamic. На сегодняшний день, мне этот подход не так нравится как раньше. У меня динамики используются в основном для реализации dynamic visitor, и то в том же MathSharp я решил тупо перейти на F# с его дискриминированными объединениями, которые намного легче обходить.
Забавно, что, как я понимаю, всё это давно есть в VB.Net в виде расширенной поддержки Linq-to-XML.
Вместо:
var element = XElement.Parse(books);
string firstBooksTitle =
element.Element(«book»).Element(«title»).Value;
string firstBooksAuthor =
element.Element(«book»).Element(«author»).Attribute(«name»).Value;
string secondBooksTitle =
element.Elements().ElementAt(1).Element(«title»).Value;
Пишем просто
Dim element = XElement.Parse(books)
Dim firstBooksTitle = element.<book>.<title>.Value;
Dim firstBooksAuthor = element.<book>.<author>.@name.Value;
Dim secondBooksTitle = element.Skip(1).Take(1).<title>.Value
В таком синтаксисе поддерживаются неймспейсы, элементы (дети/потомки), атрибуты и индексация элементов:
contact.<ns:phone>
phone.@type
contacts...<name>
contacts...<name>(0)
contacts...<name>.Value
Создавать XML тоже становится намного удобнее. (в VB.Net вообще есть XML литералы)
msdn.microsoft.com/en-us/library/bb384833.aspx
msdn.microsoft.com/en-us/library/bb384974.aspx
Вместо:
var element = XElement.Parse(books);
string firstBooksTitle =
element.Element(«book»).Element(«title»).Value;
string firstBooksAuthor =
element.Element(«book»).Element(«author»).Attribute(«name»).Value;
string secondBooksTitle =
element.Elements().ElementAt(1).Element(«title»).Value;
Пишем просто
Dim element = XElement.Parse(books)
Dim firstBooksTitle = element.<book>.<title>.Value;
Dim firstBooksAuthor = element.<book>.<author>.@name.Value;
Dim secondBooksTitle = element.Skip(1).Take(1).<title>.Value
В таком синтаксисе поддерживаются неймспейсы, элементы (дети/потомки), атрибуты и индексация элементов:
contact.<ns:phone>
phone.@type
contacts...<name>
contacts...<name>(0)
contacts...<name>.Value
Создавать XML тоже становится намного удобнее. (в VB.Net вообще есть XML литералы)
msdn.microsoft.com/en-us/library/bb384833.aspx
msdn.microsoft.com/en-us/library/bb384974.aspx
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
DynamicXml: «динамическая» оболочка для работы с XML данными