C# xml,xmlreader使用c只读特定部分#

C# xml,xmlreader使用c只读特定部分#,c#,.net,xml,xmlreader,C#,.net,Xml,Xmlreader,我使用c#从xml文件中获取参数。我的问题是我想只读当前程序参数。(v1.0、v1.1、v1.2…) 2000 210 65000 2500 400 130000 使用(XmlReader=XmlReader.Create(“testXml.xml”)) { while(reader.Read()) { if(reader.IsStartElement()) { if(读卡器[“版本”]==实际版本) { //?? } } } } 这将返回属性Version==actualVersion所在

我使用c#从xml文件中获取参数。我的问题是我想只读当前程序参数。(v1.0、v1.1、v1.2…)


2000
210
65000
2500
400
130000
使用(XmlReader=XmlReader.Create(“testXml.xml”))
{
while(reader.Read())
{
if(reader.IsStartElement())
{
if(读卡器[“版本”]==实际版本)
{
//??
}
}
}
}

这将返回属性
Version==actualVersion
所在的所有
Resource
节点。之后,您可以对节点执行任何操作。

您可以使用Xml Linq方法,如:

if (reader["Version"] == actualVersion)
{
    while (reader.ReadToFollowing("Input"))
    {
        string value = reader.ReadElementContentAsString();
        // or
        int value = reader.ReadElementContentAsInt();
    }
}
var xmlFile= XElement.Load(xmlString);
var actualVersion = "V1.1";
var requiredXmlData = xmlFile.Elements("Resource").Where(c=>c.Attribute("Version").Value==actualVersion );
使用System.Xml;
...
字符串actualVersion=“V1.1”;
XmlDocument rssDoc=新的XmlDocument();
Load(“testXML.xml”);
XmlNodeList _ngroups=rssDoc.GetElementsByTagName(“资源”);

对于(inti=0;i,使用XmlReader和XMLLINQ的组合


您有任何理由在这里使用
XmlReader
吗?如果可能的话,我强烈建议您使用LINQ to XML。我只会使用
XmlReader
来读取潜在的巨大文件,而不将其加载到内存中,或者是为了实现
XmlReader
中描述的接口。
if (reader["Version"] == actualVersion)
{
    while (reader.ReadToFollowing("Input"))
    {
        string value = reader.ReadElementContentAsString();
        // or
        int value = reader.ReadElementContentAsInt();
    }
}
var xmlFile= XElement.Load(xmlString);
var actualVersion = "V1.1";
var requiredXmlData = xmlFile.Elements("Resource").Where(c=>c.Attribute("Version").Value==actualVersion );
using System.Xml;
...
string actualVersion="V1.1";
XmlDocument rssDoc = new XmlDocument();
rssDoc.Load("testXML.xml");
XmlNodeList _ngroups = rssDoc.GetElementsByTagName("Resource");
for(int i=0;i<=_ngroups.Count-1;i++)
{
    if(_ngroups[i].Attributes[0].InnerText.ToString()==actualVersion)
    {
        for(int j=0;j<=_ngroups[i].ChildNodes.Count-1;j++)
              Console.WriteLine(_ngroups[i].ChildNodes[j].InnerText);
   }
}
...
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)
        {
            XmlReader reader = XmlReader.Create(FILENAME);

            while (!reader.EOF)
            {
                if (reader.Name != "Resource")
                {
                    reader.ReadToFollowing("Resource");
                }
                if (!reader.EOF)
                {
                    XElement resource = (XElement)XElement.ReadFrom(reader);
                    string version = (string)resource.Attribute("Version");
                }
            }
        }
    }
}