在C#中,我如何使用xml.linq来获取嵌套在xml中的值?

时间:2015-01-30 03:08:53

标签: c# xml linq

很抱歉,如果有人问我无法找到它。 我对XML并不满意,但我正在尝试使用它

xml看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<Config>
  <commands>
    <command name="check">
      <stdout>output_value</stdout>
    </command>
    <command name="ping http://192.168.1.1">
      <stdout>result</stdout>
    </command>
    <command name="config">
      <stdout>Initialized</stdout>
      <stdout>listen on http://127.0.0.1:8888</stdout>
      <stdout>loaded</stdout>
      <stdout>verified</stdout>
      <stdout>connected</stdout>
      <stdout>connection INITIALIZED</stdout>
      <stdout>load complete</stdout>
    </command>
    <command name="connection">
      <stdout>Got connection</stdout>
    </command>
  </commands>
</Config>

基本上我试图在每个命令下获取文本在stdout中的位置。

我已经想通了我能说到的地方&#34;命令的名字&#34;通过做

XDocument xd = XDocument.Load("config.xml");
var commandcheck = from paths in xd.Decendants(xmln)
                   select paths.Attribute(attrb).value
foreach(var paths in commandcheck)
{
   Console.WriteLine(paths)
}

基本上我试图解析和显示这些数据的方式是

Command name Check
stdout output_value

command name config
stdout initialized
stdout listen
stdout loaded 

等等

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Element方法获得您的愿望输出。

var textcheck = from paths in xd.Descendants("command") select paths.Element("commandoutput").Value;
foreach (var paths in textcheck)
{
   Console.WriteLine(paths);//Here you get output as 'TEXT'
}