まったく個人的なプログラムに関するメモです

Dim BaseItem As XElement = _
   <Root>
      <Item id="1">a</Item>
      <Item id="2">b</Item>
      <Item id="3">c</Item>
      <Item id="4">d</Item>
      <Item id="5">e</Item>
   </Root>

'XML変換のクエリ??実行
Dim NewItem As XElement = _
   <root>
      <%= From C In BaseItem.Descendants("Item") Select <item id=<%= C.@id %>><%= C.Value %>
         <%= From D In BaseItem.Descendants("Item") Where C.@id <> D.@id Select <item2 id=<%= D.@id %>><%= D.Value %></item2> %>
      </item>%>
   </root>

Console.WriteLine(NewItem)
[補足]
BaseItemはサンプルなのでプログラム中で作成しました。
xElelemtはメモ帳で書くようにして作成できるので結構便利♪

クエリ??で体裁を整えます。
文章中に<%= ~ %>までの間に式を埋め込んでいきます。
今まで(私はですが…)二段でループさせていたのがループを書かずに作成できるようになりました。

上記のサンプルコードではBaseItemのItemノードの子ノードに親ノードの@IDが一致しないものがNewItemに生成されます。ちょっとややこしいく見えますが、コードを見やすいように改行するとわかりやすくなると思います。

また、プログラム内にスキーマを定義していればインテリセンス??(コードの候補の事)が表示されるらしい…
…が、検証してません(^^ゞ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます