0

这是我的 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>

我想读取 id =1 的所有属性 College 标签

但我不知道怎么读

4

3 回答 3

1

你可以使用XDocumentLinq

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");
于 2013-07-30T06:21:56.007 回答
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

等等

于 2013-07-30T06:23:18.227 回答
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 的节点学院的子节点的文本,用管道分隔。如果这有帮助,请告知

于 2013-07-30T07:06:00.327 回答