从URL链接获取rel值

时间:2012-06-08 14:43:50

标签: c# .net xml xml-parsing

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

<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/" />

2 个答案:

答案 0 :(得分:2)

如何将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; 
}

答案 1 :(得分:0)

您可以使用this public xml library,然后使用以下内容获取值:

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:则不会尝试。这取决于声明命名空间的位置。如果它在根节点中,它应该没问题。

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