【问题标题】:How to get all attributes with the same name?如何获取具有相同名称的所有属性?
【发布时间】:2015-05-15 18:23:33
【问题描述】:

假设这是 xml 文件

<div Pictures>
<span Pic1>
  <a title="pic1" class="thumb" image="LinkToImage.com">
  </a>
</span >
<span Pic2>
  <a title="pic2" class="thumb-small" image="LinkToImage2.com">
  </a>
</span >
</div >

如何从该页面获取所有图像属性?我知道我需要使用 XPath 语法 //@image 但我找不到收集所有这些属性并将它们放在 foreach 中的代码。我已经尝试过类似的方法,但没有奏效

var WebgetME_ = new HtmlWeb();
var docME_ = WebgetME_.Load(MEURL_);
foreach (HtmlAttribute HA_ME in docME_.DocumentNode.Attributes["//@image"])) { ;}

如何从一个页面中获取具有相同属性名称的所有属性信息?

【问题讨论】:

  • 这被标记为XML,并且显然是HTML

标签: c# html attributes nodes


【解决方案1】:

如何从该页面获取所有图片属性?

我相信你可以做到以下几点:

var images =
    from link in docME_.Descendants("a")
    where link.Attributes.Contains("image")
    select link.Attributes["image"].Value;

这个

  • 获取所有&lt;a .../&gt;节点
  • 通过“图像”属性过滤它们
  • 检索此属性的值。

【讨论】:

  • 然后我就做foreach(string linktoimage in images) 或者使用所有值的最佳方式是什么?
  • @Strinix 如果你想迭代它们,你可以使用foreach,或者如果你想将它们用作列表或数组,则可以使用images.ToList()images.ToArray()
  • 先使用 images.ToArray() 然后在数组上使用 foreach 或直接使用 foreach 有什么区别吗?在我完成了我在 foreach 中必须做的事情之后,我不需要这些图像,所以它是一次性使用的。 @亚历克斯
  • 如果您只需要遍历它们并且在迭代后不需要它们只需执行foreach,在这种情况下无需分配列表或数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
相关资源
最近更新 更多