Работа с XML через C# (xml, обработанный через кубик Парсинг XML)

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Второй раз сталкиваюсь и не понимаю - то ли багует зенка, то ли я что-то не так делаю. зенка при приведении к string зачем-то добавляет теги внешние, а без приведения к string - не принимает тип.

т.е. вытаскиваю xml.urlset.url.loc (сайтмеп паршу), она при доступе к:
project.xml.urlset.url[0].loc

за место:
http://site.ru

выдает:
<loc>http://site.ru</loc>

При парсинге json такого не происходит.

Пробовал через дебагинг понять что там внутри, но это не дало никакого результата:


Собственно, сам код:
C#:
List<string> links = new List<string>();

foreach(dynamic lnk in project.Xml.urlset.url) {
    links.Add(Convert.ToString(lnk.loc)); // вот тут без приведения к string - не работает
}

lock(SyncObjects.ListSyncer) {
    project.Lists["links"].AddRange(links);
}

PS: не знаю поправили или нет, но ранее сталкивался с тем, что парсинг через project.Xml.FromString() - не работал в принципе. -- проверил, в 5.10.7.0 - всё отрабатывает корректно.
 
Последнее редактирование:

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Разобрался. Из-за этих прокси объектов крайне сложно дебажить такой простой код.

Следует изменить вышеприведенный код на следующий:
C#:
List<string> links = new List<string>();

foreach(dynamic lnk in project.Xml.urlset.url) {
    links.Add(lnk.loc.Value);
}

lock(SyncObjects.ListSyncer) {
    project.Lists["links"].AddRange(links);
}
Суть в том, что нужно обращаться к атрибуту через .Value
 
  • Спасибо
Реакции: Hannes и arhip1985

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
всё таки было бы удобно прикреплять тему к методу из справки. потом бы зашёл в справку, а там в примерах кода ссылки на темы форума, где реализуется)
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
всё таки было бы удобно прикреплять тему к методу из справки. потом бы зашёл в справку, а там в примерах кода ссылки на темы форума, где реализуется)
Хороший вариант, но это повлечет очень много ручной работы, в т.ч. переписывание системы генерации C# документации в Zenno. Но, если разработчики увидят это - думаю, стоит взять на карандаш такое предложение.
В последующем всегда можно было бы "тыкать носом" в http://zennolab.com/wiki/ru:zennoposter:macros-documentation , где уже была бы куча примеров.
 
  • Спасибо
Реакции: Sanekk и arhip1985

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Я вообще уже давно в голове держу идею, что пора бы завести поддомен с вот такой системой сниппетов: https://djangosnippets.org/ (потыкайте там, поймете о чем речь).
Не знаю только как эту идею преподнести, т.к. не могу продумать систему модерации / проверки валидности кода и прочие мелочи.

В целом там, если что, система открытая: https://github.com/django/djangosnippets.org - все исходники тут. То есть можно было бы форкнуть, сделать "под себя" и запустить. Я django знаю и много работал с этим фреймворком, но один не потяну такую затею (ну и, конечно, хотелось бы получить поддержку от разработчиков).

Осмелюсь упомянуть тут @nuaru, @darkdiver, @VladZen. Может попробуем вынести это предложение в отдельный диалог (тему) и попробуем совместными усилиями реализовать что-то такое? Но нужно четкое понимание как это делать, где хостить, как связывать это с форумом / документацией. Делать что-то такое только от себя (чтоб я там был "камнем преткновения") - не вижу смысла.
 
Последнее редактирование:

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
да, такого не хватает. Но хотелось бы чтобы была именно завязка каждого с каждым - сообщение на форуме, документация, сниппеты. <->
Вопрос как продумать систему модерации и добавления завязки - только модераторы это делать будут. либо же пользователи сами смогут делать завязку для себя, как хотят, ну или видеть как завязки делают другие пользователи. в общем думать можно и нужно, было бы полезно, удобно и широко
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)