从 URL 链接获取相关值

本文关键字:获取 URL 链接 | 更新日期: 2023-09-27 18:36:39

我有一个xml文件,里面有两个链接。我需要检查与 rel next的链接是否存在,如果它确实获得了它的 href 值。

<a:link rel="prev" type="application/atom+xml" type="application/atom+xml" href="/v3.2/en-us/" />
<a:link rel="next" type="application/atom+xml" type="application/atom+xml" href="/v3.2/en-us/" />

从 URL 链接获取相关值

如何将 xml 读入 XDocument 并使用 LINQ 查找下一个元素。

XDocument x = XDocument.Parse("<xml><link rel='"prev'" type='"application/atom+xml'" href='"/v3.2/en-us/'" /> <link rel='"next'" type='"application/atom+xml'" href='"/v3.2/en-us/'" /></xml>");
XElement link = x.Descendants("link")
                 .FirstOrDefault(a => a.Attribute("rel").Value == "next");
String href = string.Empty;
if(link != null)
{
     href = link.Attribute("href").Value; 
}

您可以使用此公共 xml 库,然后通过以下方式获取值:

XElement root = XElement.Load(file); // or .Parse(string)
string href = root.XGetElement<string>("//a:link[@rel={0}]/href", null, "next");
if(null != href)
    ... link was found ...

这应该适用于 a:link ,但如果它没有a:就不尝试。 这取决于声明 a 命名空间的位置。 如果它在根节点中,应该没问题。

XGetElement()基本上是XPathElement("//a:link[@rel={0}]").Get<string>("href", null)的组合。 Get()也是从节点获取值的库的一部分,首先按名称检查属性,然后检查子节点。