我的XML结构如下<ClassMembers>
  <StudentInfo ClassID="1" OrderNumber="116" StudentNumber="1" StudentName="张三">
    <SumTime>2</SumTime>
    <Percent>1.00</Percent>
    <AbsenceTime>1</AbsenceTime>
    <NM2013-05-14 IsCall="true">缺</NM2013-05-14>
    <PM2013-05-14 IsCall="false">出</PM2013-05-14>
    <AM2013-05-14 IsCall="true">出</AM2013-05-14>
  </StudentInfo>
  <StudentInfo ClassID="1" OrderNumber="115" StudentNumber="2" StudentName="李四">
    <SumTime>1</SumTime>
    <Percent>0</Percent>
    <AbsenceTime>0</AbsenceTime>
    <NM2013-05-14 IsCall="true">出</NM2013-05-14>
    <PM2013-05-14 IsCall="false">出</PM2013-05-14>
  </StudentInfo>
</ClassMembers>我想查询出来满足条件ClassID="1" StudentNumber="1" IsCall="true" 结果为
StudentName="张三"
 <NM2013-05-14 IsCall="true">缺</NM2013-05-14>
<AM2013-05-14 IsCall="true">出</AM2013-05-14>
返回一个DataTable 用Linq to XML也可以!!!在线求答案或者思路!!!最好有代码!!谢谢!C#XML

解决方案 »

  1.   

    你的XML结构不复杂 你可以试试 用LINQ先查询出来 在定义一个DataTable 一个一个赋值
    file现取字符串
     XDocument doc = XDocument.Parse(string);
       
                  var Titlestr = (from p in doc.Root.Elements()
                                                where p.Attribute("ClassID").Value == "1" 等等条件
                                                select p.Attribute("StudentName").Value);           
     
    不知道是不是你想要的 如果不是 就select 别的你想要的值
      

  2.   


    XmlDocument xml = new XmlDocument();
                xml.LoadXml(@"<ClassMembers>
      <StudentInfo ClassID='1' OrderNumber='116' StudentNumber='1\' StudentName='张三'>
        <SumTime>2</SumTime>
        <Percent>1.00</Percent>
        <AbsenceTime>1</AbsenceTime>
        <NM2013-05-14 IsCall='true'>缺</NM2013-05-14>
        <PM2013-05-14 IsCall='false'>出</PM2013-05-14>
        <AM2013-05-14 IsCall='true'>出</AM2013-05-14>
      </StudentInfo>
    </ClassMembers>");
                XmlNode node = xml.SelectSingleNode(@"ClassMembers");
                XmlNodeList nodelist = node.ChildNodes;
                for (int i = 0; i < nodelist.Count; i++)
                {
                    string ClassIDValue = nodelist[i].Attributes["ClassID"].Name;//ClassID属性值
                    string StudentNumberValue = nodelist[i].Attributes["StudentNumber"].Value;//StudentNumber属性值 
                    if (ClassIDValue == "1" && StudentNumberValue == "1")
                    {
                        XmlNodeList newnodeList = nodelist[i].ChildNodes;
                        for (int j = 0; j < newnodeList.Count; j++)
                        {
                            if (string.IsNullOrEmpty(newnodeList[j].Attributes("IsCall")) && newnodeList[j].Attributes("IsCall") == "true")
                            {
                                //组织DataTable;
                            }
                        }
                    }
                }C#操作Xml,看一下吧
      

  3.   

    这个会查询 关键是下面的 <NM2013-05-14 IsCall="true">缺</NM2013-05-14>
     <AM2013-05-14 IsCall="true">出</AM2013-05-14>怎么查询出来......
      

  4.   

    谢谢谢谢!这几天让我一直用什么linq呢把最基本的查询忘了!哎!谢谢谢谢!你是不是对这个XML的操作很是熟悉啊?
      

  5.   


      var query = from x in xe.Elements("StudentInfo")
                            where (x.Attribute("ClassID").Value == "1" && x.Attribute("StudentNumber").Value == "1")
                            select new
                            {
                                StudentName = x.Attribute("StudentName").Value,
                                StudentInfo = x,
                                mm = x.Descendants().Where(y => y.Attribute("IsCall").Value == "true")
                            };