Pull to refresh

Comments 5

Простите, но не могли бы вы указать цель, ради которой этого делалось? Т. е. то, о чем вы говорите в первой строке «функционал, формирующий по некоторому алгоритму разнообразный xml» — что за алгоритм и что за разнобразный xml?

Просто есть впечатление, что древовидный System.Xml.Linq (XElement и Co.) здесь будет намного нагляднее и проще. А если нужно парсить какие-то куски и из них генерацию делать, то и T4 можно прикрутить для генерации.
Конкретно эти два класса делались для написания тестов. Цель теста — определить некоторые входные данные, сформировать на их основе тестируемым алгоритмом xml и сравнить этот xml с эталонным образцом.
Соответственно, первая и основная цель — наглядно и быстро определить (ну и сравнить) этот самый Xml — чтобы тест был понятного вида. Синтаксис XDocument для определения xml все-таки более громоздок, хотя и более полнофункционален.
Можно было бы на vb.net сборку написать и использовать ее. Там синтаксис создание XDocument очень приятный. Например:
Dim srcTree As XDocument = _
            <?xml version="1.0" encoding="utf-8" standalone="yes"?>
                <!--This is a comment-->
                <Root>
                    <Child1>data1</Child1>
                    <Child2>data2</Child2>
                    <Child3>data3</Child3>
                    <Info1>info1</Info1>
                </Root>
Очень интересная фича, не знал о ней, правда и на vb почти не пишу. Хотя, опять же, для моей задачи (где надо еще и переменные в качестве значений атрибутов использовать) было бы тоже громоздко. Или оно умеет и переменные вставлять?
Вот небольшой пример (нашел на stackoverflow, сам на vb.net не пишу):
Dim map As XDocument = <?xml version="1.0" encoding="UTF-8"?>
                       <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
                           <%= From n In Nodes.Cast(Of Node)() _
                               Select <url>
                                          <loc><%= AbsoluteRoot + Url.RouteUrl("IdOnly", New With {.id = n.Id}) %></loc>
                                      </url> %>
                       </urlset>

По идее, все что нужно вставить, можно экранировать с помощью <%= %>
Sign up to leave a comment.

Articles