C# C和LINQ.XML从XML中选择
我一直在努力找出如何从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 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吗?成功了,谢谢!啊,我明白了,很好,非常感谢你的澄清。我不知道你必须通过属性像这样选择它。工作完美:!啊,我明白了,很好,非常感谢你的澄清。我不知道你必须通过属性像这样选择它。工作完美:!