我有一个非常简单的XML文档
<content>
<reference>
<title>www</title>
<url>http://xxx</url>
</reference>
<reference>
<title>yyy</title>
<url>http://zzz</url>
</reference>
</content>
我正在尝试使用LINQ依次查询每个reference
以提取title
和url
中的文本。任何一个都没有任何条件,例如,没有where
,这似乎很简单,但我有终端大脑褪色试图完成这个。
答案 0 :(得分:4)
您应该首先实例化一个新的XElement
XElement root = XElement.Parse(xmlString);
然后您可以获得所有子reference
元素:
IEnumerable<XElement> references = root.Elements("references");
现在假设我们有一个包含title
和url
的类:
public class Info {
public string Title { get; set; }
public string Url { get; set; }
}
我们可以将reference
元素映射到这些类:
IEnumerable<Info> infos = references.Select(r => new Info() {
Title = r.Element("title").Value,
Url = r.Element("url").Value
});
答案 1 :(得分:1)
您可以使用XDocument
类和LINQ以下方式:
string MyXml = @"<RootNode>
........
........
</RootNode>";
XDocument xdoc= XDocument.Parse(MyXml);
var result = from reference in xdoc.Descendants("reference")
select new
{
Title = reference.Element("title").Value,
Url = reference.Element("url").Value
};
答案 2 :(得分:1)
void Main()
{
var xml = @"<content>
<reference>
<title>www</title>
<url>http://xxx</url>
</reference>
<reference>
<title>yyy</title>
<url>http://zzz</url>
</reference>
</content>";
XElement.Parse(xml).Elements("reference").ToList().ForEach(x =>
{
Console.WriteLine("Title: {0}, URL: {1}", x.Element("title"), x.Element("url"));
});
}
答案 3 :(得分:0)
试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication30
{
class Program
{
static void Main(string[] args)
{
string input =
"<content>" +
"<reference>" +
"<title>www</title>" +
"<url>http://xxx</url>" +
"</reference>" +
"<reference>" +
"<title>yyy</title>" +
"<url>http://zzz</url>" +
"</reference>" +
"</content>";
XDocument doc = XDocument.Parse(input);
var results = doc.Descendants("reference")
.Select(x => new {
title = x.Descendants("title").FirstOrDefault().Value,
url = x.Descendants("url").FirstOrDefault().Value
});
}
}
}