[英]How can I read two attributes of a single node in XML in forms C#?
这是我的代码,用于读取单个节点的两个属性。
这是我的Xml文件。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Users>
<User Name="aa" Occupation="dd" Date_Of_Birth="123456" NIC="123123" ID="79461" />
<User Name="Ali Rasheed" Occupation="Student" Date_Of_Birth="111694" NIC="4550246607037" ID="12661" />
<User Name="Asif Rasheed" Occupation="Civil Engineer" Date_Of_Birth="241190" NIC="4550346603073" ID="90939" />
</Users>
码:
private void button1_Click(object sender, EventArgs e)
{
XDocument doc = XDocument.Load(@"C:\GenesisSolutionsCRMSBuild12101\XMLDatabase.xml");
var idExist = (doc.Descendants("User").Any(x => (string)x.Attribute("ID") == txtId.Text));
if (idExist)
{
var nicExist = doc.Descendants("User").Any(x => (string)x.Attribute("NIC") == txtNic.Text);
if (nicExist)
{
new formMainMenu().Show();
Hide();
}
else
{
MessageBox.Show("Invalid NIC", "Member Login - Genesis Solutions CRMS");
}
}
else
{
MessageBox.Show("Invalid ID", "Member Login - Genesis Solutions CRMS");
}
}
我想检查单个节点是否具有例如两个属性。 如果输入id 121661和nic 4550246607037,则应该说是,该值存在于节点中。
您不能只在Any
检查两者吗?
var bothExist = (doc.Descendants("User").Any(x => (string)x.Attribute("ID") == txtId.Text &&
(string)x.Attribute("NIC") == txtNic.Text);
您可以使用OR,但随后必须确定一项或两项是否匹配。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string input =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
"<Users>" +
"<User Name=\"aa\" Occupation=\"dd\" Date_Of_Birth=\"123456\" NIC=\"123123\" ID=\"79461\" />" +
"<User Name=\"Ali Rasheed\" Occupation=\"Student\" Date_Of_Birth=\"111694\" NIC=\"4550246607037\" ID=\"12661\" />" +
"<User Name=\"Asif Rasheed\" Occupation=\"Civil Engineer\" Date_Of_Birth=\"241190\" NIC=\"4550346603073\" ID=\"90939\" />" +
"</Users>";
XDocument doc = XDocument.Parse(input);
long searchID = 121661;
long searchNic = 455024660703;
var results = doc.Descendants ("User").Where(x => (long.Parse(x.Attribute("NIC").Value) == searchNic) || long.Parse(x.Attribute("ID").Value) == searchID)
.Select(y => new {id = long.Parse(y.Attribute("ID").Value), nic = long.Parse(y.Attribute("NIC").Value)}).ToList();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.