C# LINQ在C中查询XML
我有一个非常简单的XML文档C# LINQ在C中查询XML,c#,xml,linq,C#,Xml,Linq,我有一个非常简单的XML文档 <content> <reference> <title>www</title> <url>http://xxx</url> </reference> <reference> <title>yyy</title> <url>http://zzz<
<content>
<reference>
<title>www</title>
<url>http://xxx</url>
</reference>
<reference>
<title>yyy</title>
<url>http://zzz</url>
</reference>
</content>
我试图使用LINQ依次查询每个引用,以提取标题和url中的文本。这其中没有任何条件,例如,no where,看起来很简单,但我正在让terminal brain fade尝试完成这项工作。您可以使用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
};
请参见您可以通过以下方式将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
};
请参见您应该从实例化一个新的XElement开始 然后可以获得所有子引用元素:
IEnumerable<XElement> references = root.Elements("references");
我们可以将引用元素映射到这些类:
IEnumerable<Info> infos = references.Select(r => new Info() {
Title = r.Element("title").Value,
Url = r.Element("url").Value
});
您应该从实例化一个新的XElement开始 然后可以获得所有子引用元素:
IEnumerable<XElement> references = root.Elements("references");
我们可以将引用元素映射到这些类:
IEnumerable<Info> infos = references.Select(r => new Info() {
Title = r.Element("title").Value,
Url = r.Element("url").Value
});
试试这个
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
});
}
}
}
试试这个
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
});
}
}
}
您期望的结果格式是什么?尝试加载文档XDocument doc=XDocument.Loadyourfile.xml;您期望的结果格式是什么?尝试加载文档XDocument doc=XDocument.Loadyourfile.xml;那太好了;它产生了结果,并额外添加了一个与信息对象的良好接触。非常感谢@Peedurr很高兴我能帮上忙;那太好了;它产生了结果,并额外添加了一个与信息对象的良好接触。非常感谢@Peedurr很高兴我能帮上忙;