这是我的Xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Colleges>
<College id="1" >
<Name>Guru Kashi University</Name>
<ShortName>GKU</ShortName>
<Address>Talvandi Sabo</Address>
<City>Bathinda</City>
<Contact>09876543210</Contact>
</College>
<College id="2" >
<Name>Shaheed Udham Singh</Name>
<ShortName>SUS</ShortName>
<Address>Tangori</Address>
<City>Mohali</City>
<Contact>01234567890</Contact>
</College>
</Colleges>
我想阅读所有属性College tag其中id = 1
但我不知道如何阅读
答案 0 :(得分:1)
您可以使用XDocument
和Linq
XDocument xDoc1 = XDocument.Parse(@" <Colleges> <College id=""1"" > <Name>Guru Kashi University</Name> <ShortName>GKU</ShortName> <Address>Talvandi Sabo</Address> <City>Bathinda</City> <Contact>09876543210</Contact> </College> <College id=""2"" > <Name>Shaheed Udham Singh</Name> <ShortName>SUS</ShortName> <Address>Tangori</Address> <City>Mohali</City> <Contact>01234567890</Contact> </College> </Colleges>");
var result = xDoc1.Root.Elements("College")
.Where(x => x.FirstAttribute.Name == "id" &&
x.FirstAttribute.Value == "1");
答案 1 :(得分:1)
您可以非常轻松地使用LINQ to XML执行此操作。假设您在字符串上面有XML:
// Use XDocument.Load(fileName) if the XML is in file.
XDocument xDoc = XDocument.Parse(xml); // xml is the XML string
var query = from x in xDoc.Descendants("College")
where x.Attribute("id").Value == "1"
select x.Elements;
上面的内容将为您提供College
元素下ID为1的所有元素的集合。
或者,您可以创建匿名类型:
var query = (from x in xDoc.Descendants("College")
where x.Attribute("id").Value == "1"
select new {
Name = x.Element("Name").Value,
ShortName = x.Element("ShortName").Value,
Address = x.Element("Address").Value,
City = x.Element("City").Value,
Contact = x.Element("Contact").Value
}).SingleOrDefault();
在这种情况下,我使用SingleOrDefault获取唯一值(如果没有找到则没有值);如果你可以有多个“id”= 1然后删除SingelOrDefault,你将拥有一个匿名类型的集合。
然后您可以访问以下数据:
query.Name
query.ShortName
等
答案 2 :(得分:1)
XmlDocument Doc = new XmlDocument();
Doc.Load(HttpContext.Current.Server.MapPath("Your xml file path"));
XmlNodeList nodeList = MenuListNode.SelectNodes("//College");
string value= "";
if(nodeList.Attributes("id").Value.Equals("1"))
{
value = nodeList.Attributes("id").Value.ToString() + "|";
foreach (XmlNode MenuNode in MenuListNode.ChildNodes)
{
value = value + MenuNode.InnerText.ToString() + "|";
}
}
现在该值将给出节点学院的子节点的文本,其id属性为1,并用管道分隔。请告知是否有帮助