获取具有相同名称的子节点的值

时间:2016-11-29 09:19:25

标签: c# .net xml

<photos items="5">
<path>
http://www.test1.com
</path>
<path>
http://www.test2.com
</path>
<path>
http://www.test3.com
</path>
<path>
http://www.test4.com
</path>
<path>
http://www.test5.com
</path>
</photos>

我试图将所有path个节点值放入列表中。

我试过这样的事情:

var nodes = (from n in xdoc.Descendants("photos")
             select n.Elements("path")).ToList();

使用foreach循环后,我想将路径节点的每个值存储到列表中......但我不知道怎么做?还有其他更简单的解决方案吗?

3 个答案:

答案 0 :(得分:2)

这就是你想要的:

            const string xml = @"
<photos items=""5"">
<path>
http://www.test1.com
</path>
<path>
http://www.test2.com
</path>
<path>
http://www.test3.com
</path>
<path>
http://www.test4.com
</path>
<path>
http://www.test5.com
</path>
</photos>";
            var xdoc = XElement.Parse(xml);
            var paths = xdoc.Elements("path").Select(p => p.Value);

如果xml来自具有上述架构的文件,您可以Load

        xdoc = XElement.Load("photos.xml");
        var paths = xdoc.Elements("path").Select(p => p.Value).ToList();

答案 1 :(得分:0)

这似乎有效:

foreach( string p in paths)
{
 /// get the urls in some list
}

然后

// Plugin
(function($){
  $.fn.selectify = function(){
    return this.click(function(event){
      event.preventDefault();
      var $this = $(this);
      var target = $this.attr('data-target');
      var val = $this.attr('data-selectify');
      $(target).val(val);
    });
  };
  
  // auto init for all elements which has 'data-selectify' attribute
  $(function(){
    $('[data-selectify]').selectify();
  });
  
})(jQuery);

答案 2 :(得分:0)

您可以尝试以下操作:

XDocument xdoc = XDocument.Load("full path to xml file");
List<string> values = xdoc.Root.Elements("path").Select(p => p.Value.Trim()).ToList();