Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ在C中查询XML_C#_Xml_Linq - Fatal编程技术网

C# LINQ在C中查询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<

我有一个非常简单的XML文档

<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很高兴我能帮上忙;