C# 如何在Xml中获取当前属性值,并使用当前属性值检索下一个节点值?

C# 如何在Xml中获取当前属性值,并使用当前属性值检索下一个节点值?,c#,.net,xml,xpath,C#,.net,Xml,Xpath,您只需要创建一个列表对象。使用XMLLINQ是最好的方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.XPath; namespace ConsoleApplication14 { interface IQuestion {

您只需要创建一个列表对象。使用XMLLINQ是最好的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.XPath;

namespace ConsoleApplication14
{
    interface IQuestion
    {
        void Question1();
        void Next();

    }
    class Question : IQuestion
    {
         string BuildXpathQuery(int c)
        {

            string part1 = @"questions/question[@num='";
            string part2 = @"']";
            string MyQuery = part1 + c + part2;
            return MyQuery;

        }
        public void Question1()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("C:\\Users\\Murari\\Documents\\Visual Studio 2015\\Projects\\ConsoleApplication14\\ConsoleApplication14\\XMLFile1.xml");


            XmlNode xnList = doc.SelectSingleNode(BuildXpathQuery(1));
            if (xnList != null)
            {
                Console.WriteLine(xnList.InnerXml);
                Console.ReadKey();
            }
        }

        public void Next()
        {

        }    
    }


    class Program
    {
        static void Main(string[] args)
        {
            IQuestion ques = new Question();
            ques.Question1();
            ques.Next();


        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.XPath;

namespace ConsoleApplication14
{
    interface IQuestion
    {
        void Question1();
        void Next();

    }
    class Question : IQuestion
    {
         string BuildXpathQuery(int c)
        {

            string part1 = @"questions/question[@num='";
            string part2 = @"']";
            string MyQuery = part1 + c + part2;
            return MyQuery;

        }
        public void Question1()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("C:\\Users\\Murari\\Documents\\Visual Studio 2015\\Projects\\ConsoleApplication14\\ConsoleApplication14\\XMLFile1.xml");


            XmlNode xnList = doc.SelectSingleNode(BuildXpathQuery(1));
            if (xnList != null)
            {
                Console.WriteLine(xnList.InnerXml);
                Console.ReadKey();
            }
        }

        public void Next()
        {

        }    
    }


    class Program
    {
        static void Main(string[] args)
        {
            IQuestion ques = new Question();
            ques.Question1();
            ques.Next();


        }
    }
}
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);

            var xnList = doc.Descendants("question").Select(x => new
            {
                num = (int)x.Attribute("num"),
                text = x.Value
            }).ToList();

            foreach (var question in xnList)
            {
            }
        }
    }
}