Como posso dividir o valor de um atributo dentro de LINQ (-to-XML)?
-
23-08-2019 - |
Pergunta
Eu estive me sentindo como começar a fazer algumas coisas divertidas com os meus bookmarks deliciosos e LINQ para XML, e eu queria saber se existe uma maneira de dividir o atributo tag em LINQ.
O que eu quis dizer com dividir a tag dentro LINQ foi gerando um conjunto de cordas para cada elemento post, de modo que o resultado esperado seria uma coleção genérica de elementos post
, com seus atributos como propriedades , em que a propriedade tag
é em si uma outra coleção de cordas, com seus itens sendo cada tag.
Para aqueles que não bastante familiarizado com o delicious.com xml exportado, aqui está a estrutura básica de um elemento:
<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"
/>
Aqui está o trecho de código que estou usando:
XDocument delicious = XDocument.Load("all.xml");
var bookmarks = from posts in delicious.Descendants().Attributes("tag")
select (string)posts;
Todas as ideias, sugestões, comentários seria muito apreciada.
Solução
Qual é a sua saída desejada realmente gosto? Você quer um array de cada valor no campo "tag"?
var bookmarks = from posts in delicious.Descendants().Attributes("tag")
select ((string)posts).Split(" ");
Isso iria dar-lhe uma lista de arrays. É difícil dizer como conseguir o que você quer, uma vez que não é muito bem especificado.
Outras dicas
classe string tem um método Split.
É isso que você está procurando?
EDIT: String.Join (Environment.NewLine, bookmarks.ToArray ());
O que eu fiz foi usar 'set' e atribuir o valor para essa variável, e então usado conjunto para continuar a manipular, então no final eu era capaz de apenas usá-lo na minha consulta LINQ, como foi em um formar que agora era útil para mim. :)