首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用键值对读取xml节点中的所有值,并在

使用键值对读取xml节点中的所有值,并在
EN

Stack Overflow用户
提问于 2015-10-14 11:12:19
回答 1查看 430关注 0票数 1

我有一个带有键/值对的XML文件。

我正在使用的XML文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<MAN_J6_Variant>
    <play_music_media_HK>
        <key name ="Media_Press" value="echo 'Media::1' >> /pps/can/test_pps"/>
        <key name ="Media_Release" value="echo 'Media::0' >> /pps/can/test_pps"/>
        <key name ="Media_Source" value ="./fs/etfs/Touch_new -X=258 -Y=26 -display=4 -relTimeout=0.5 " />
        <key name ="USB" value ="./fs/etfs/Touch_new -X=480 -Y=134 -display=4 -relTimeout=0.5 " />
    </play_music_media_HK>
    <softkeys>  
        <key name ="Media_SK" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
  </softkeys>
    <play_music_media_SK>
        <key name ="bottom_home" value ="./fs/etfs/Touch_new -X=755 -Y=455 -display=4 -relTimeout=0.5 " />
        <key name ="HS3" value ="./fs/etfs/Touch_new -X=464 -Y=27 -display= -relTimeout= " />
        <key name ="Media_Source" value ="./fs/etfs/Touch_new -X=258 -Y=26 -display=4 -relTimeout=0.5 " />
        <key name ="USB" value ="./fs/etfs/Touch_new -X=480 -Y=134 -display=4 -relTimeout=0.5 " />
    </play_music_media_SK>
    <Inside_media>
        <key name ="Media_Source" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="Browse" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="Audio_playing" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
    </Inside_media>
    <Inside_Media_source>
        <key name ="USB" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="SD1" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="SD2" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="USB1" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="IPOD" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
    </Inside_Media_source>
    <Inside_Media_Browse>
        <key name ="Artist" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
        <key name ="Albums" value ="./fs/etfs/Touch_new -X= -Y = -display= -relTimeout= " />
    </Inside_Media_Browse>
 </MAN_J6_Variant>

我需要在单独的行中打印节点play_music_media_SK中的所有值。

我用linq编写了下面的代码

代码语言:javascript
复制
 var play_music_media_SK = doc.Descendants("play_music_media_SK").Select(x => new { play_music_media_SK = x.Attribute("name").Value, name = x.Attribute("value").ToString() });


//TestSetup.LogFile.WriteMsg("values in softkey"+taps);

  foreach (var value in play_music_media_SK)
  {
    console.writeline(value);
  }

但这不管用。

EN

回答 1

Stack Overflow用户

发布于 2015-10-14 11:23:55

这应该给你正确的结果:-

代码语言:javascript
复制
var result = doc.Root.Element("play_music_media_SK")
                      .Elements("key").Select(x => (string)x.Attribute("value"));

  foreach (var item in result)
  {
      Console.WriteLine(item);
  }

方法:从根节点搜索play_music_media_SK元素,在其中查找key元素(使用Elements,因为它们都是play_music_media_SK的直接子元素),然后最终投影属性value

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33123784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档