Как я могу разделить значение атрибута в LINQ (-to-XML)? - PullRequest
1 голос
/ 22 мая 2009

Мне хотелось начать делать забавные вещи с моими восхитительными закладками и LINQ to XML, и мне было интересно, есть ли способ разделить атрибут тега внутри LINQ.

То, что я имел в виду под , разделив тег внутри LINQ , создавало коллекцию строк для каждого элемента post, поэтому ожидаемым результатом была бы общая коллекция post элементов с его атрибутами Свойства, где свойство tag само по себе является другой коллекцией строк, каждый элемент которого является тегом.

Для тех, кто не совсем знаком с экспортированным XML-файлом Delicious, вот базовая структура элемента:

<post
    href="http://stackoverflow.com/"
    hash="e4a42d992025b928a586b8bdc36ad38d"
    description="Stack Overflow"
    tag="code development programming community tips answers reference"
    time="2009-05-22T19:44:09Z"
    extended="Stack Overflow is a programming Q & A site that's free."
    meta="e0bf85c9df073cd51cc5528637db5277"
 />

Вот фрагмент кода, который я использую:

   XDocument delicious = XDocument.Load("all.xml");

  var bookmarks = from posts in delicious.Descendants().Attributes("tag")
                  select (string)posts;

Любые идеи, предложения, комментарии будут очень признательны.

Ответы [ 3 ]

1 голос
/ 23 мая 2009

Каков на самом деле ваш желаемый результат? Вы хотите массив каждого значения в поле "тег"?

var bookmarks = from posts in delicious.Descendants().Attributes("tag")
                    select ((string)posts).Split(" ");

Это даст вам список массивов. Трудно сказать, как выполнить то, что вы хотите, так как это не очень хорошо указано.

1 голос
/ 27 мая 2009

Что я сделал, так это использовал set и присвоил значение этой переменной, а затем использовал set для продолжения манипуляции, поэтому в конце я смог просто использовать его в своем запросе linq, как это было в форма, которая была теперь полезна для меня. :)

1 голос
/ 23 мая 2009
* Строка класса

имеет метод Split.
Это то, что вы ищете?

РЕДАКТИРОВАТЬ: string.Join (Environment.NewLine, bookmarks.ToArray ());

...