Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# C和LINQ.XML从XML中选择_C#_Xml_Linq - Fatal编程技术网

C# C和LINQ.XML从XML中选择

C# C和LINQ.XML从XML中选择,c#,xml,linq,C#,Xml,Linq,我一直在努力找出如何从XML文件中选择多个值,将它们与一个特殊值进行比较,然后做一些事情。到目前为止,我只是设法选择一个单一的价值,但我也需要在同一个选择不同的一个,我希望你能帮助我 XML结构 <?xml version="1.0" encoding="utf-8"?> <userConnectionSettings version="1" lastApplicationUrl="xxx" lastIdentity="yyy"> <application

我一直在努力找出如何从XML文件中选择多个值,将它们与一个特殊值进行比较,然后做一些事情。到目前为止,我只是设法选择一个单一的价值,但我也需要在同一个选择不同的一个,我希望你能帮助我

XML结构

<?xml version="1.0" encoding="utf-8"?>
<userConnectionSettings version="1" lastApplicationUrl="xxx" lastIdentity="yyy">
    <application url="xxx" lastFolderId="zzz">
        <user name="test" domain="domain.tld" lastFolderId="yyy" />
    </application>
</userConnectionSettings>
您可以通过两种不同的方式选择域属性: 1-如@Juharr评论:

foreach (var FOurl in foDoc.Descendants("userConnectionSettings"))
{
    string domain = FOurl
        .Element("application")
        .Element("user")
        .Attribute("domain")
        .Value;
....
}
或者,通过获取应用程序的子代并选择第一项,如:

foreach (var FOurl in foDoc.Descendants("userConnectionSettings"))
{
    string domain = FOurl.Descendants("application")
        .Select(x => x.Element("user").Attribute("domain").Value)
        .FirstOrDefault();
....
}
我希望这对您有所帮助。

您可以通过两种不同的方式选择域属性: 1-如@Juharr评论:

foreach (var FOurl in foDoc.Descendants("userConnectionSettings"))
{
    string domain = FOurl
        .Element("application")
        .Element("user")
        .Attribute("domain")
        .Value;
....
}
或者,通过获取应用程序的子代并选择第一项,如:

foreach (var FOurl in foDoc.Descendants("userConnectionSettings"))
{
    string domain = FOurl.Descendants("application")
        .Select(x => x.Element("user").Attribute("domain").Value)
        .FirstOrDefault();
....
}
我希望这对您有所帮助。

尝试以下内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            List<Application> applications = doc.Descendants("application").Select(x => new Application()
            {
                url = (string)x.Attribute("url"),
                id = (string)x.Attribute("lastFolderId"),
                name = (string)x.Element("user").Attribute("name"),
                domain = (string)x.Element("user").Attribute("domain"),
                folder = (string)x.Element("user").Attribute("lastFolderId")
            }).ToList();
        }
    }
    public class Application
    {
        public string url { get; set; }
        public string id { get; set; }
        public string name { get; set; }
        public string domain { get; set; }
        public string folder { get; set; }
    }
}
请尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            List<Application> applications = doc.Descendants("application").Select(x => new Application()
            {
                url = (string)x.Attribute("url"),
                id = (string)x.Attribute("lastFolderId"),
                name = (string)x.Element("user").Attribute("name"),
                domain = (string)x.Element("user").Attribute("domain"),
                folder = (string)x.Element("user").Attribute("lastFolderId")
            }).ToList();
        }
    }
    public class Application
    {
        public string url { get; set; }
        public string id { get; set; }
        public string name { get; set; }
        public string domain { get; set; }
        public string folder { get; set; }
    }
}

你试过FOurl.Elementapplication.Elementuser.Attributedomain吗?成功了,谢谢!你试过FOurl.Elementapplication.Elementuser.Attributedomain吗?成功了,谢谢!啊,我明白了,很好,非常感谢你的澄清。我不知道你必须通过属性像这样选择它。工作完美:!啊,我明白了,很好,非常感谢你的澄清。我不知道你必须通过属性像这样选择它。工作完美:!