转换数组中的整个Xdocument

时间:2012-06-06 10:30:48

标签: xml vb.net linq

我被困在一个需要在两个具有不同coontrol文件的程序之间交换数据的项目。 程序A只创建一个XML文件,而程序B需要输入作为一个带有两个“列”的数组 - 但我该如何进行转换?

实施例: xml看起来像:

` <Presentation>
  <Options Name="1">
  <Output>MyOutPut</Output>
    <Slides Name="1">
    <Template>Template2</Template> 
      <Diagram Name="Name4">
         <More Elements...>
      </Diagram>
    </Slides>
    </Options>
  </Presentation>`

输出应该是这样的:

 `
    Presentation ""
    Options 1
    Output Myoutput
    Slides 1
    Template Template2

...
`

但我怎样才能做到这一点?我使用的是vb.net和LINQ,不知道如何解决这个问题。我尝试了一些LINQ查询,但我只获得了单独的节点或属性,所以我认为尝试不同的想法会更好。 任何建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

不幸的是,我无法提供VB代码,但我希望此C#代码段有用。

void Main()
{
    var doc = XElement.Load(@"path-to-the-file");

    doc.DescendantsAndSelf()
       .Select(ElementSelector).Dump();
}

private static KeyValuePair<string, string> ElementSelector(XElement e)
{
    var name = e.Name.ToString();
    var value = String.Empty;
    if (e.Descendants().Any())
    {
        if (e.Attributes().Any())
        {
            value = e.Attributes().First().Value;
        }
    }
    else
    {
        value = e.Value;
    }
    return new KeyValuePair<string, string>(name, value);
}