C# 多次在XML中查找特定节点并获取所有节点的值

C# 多次在XML中查找特定节点并获取所有节点的值,c#,sql,xml,visual-studio,C#,Sql,Xml,Visual Studio,我的XML看起来像这样。我有一个节点状态,这个状态可以在随机父节点下多次出现。但我希望在XML中搜索每个状态,并捕获变量中的值。我该怎么做?此外,一旦我收集了所有状态,我希望它们存储在数据库中。基本上,我希望在XML中查找所有状态并捕获这些值 <loop1> <loop2> <ID>001</ID> <sta

我的XML看起来像这样。我有一个节点状态,这个状态可以在随机父节点下多次出现。但我希望在XML中搜索每个状态,并捕获变量中的值。我该怎么做?此外,一旦我收集了所有状态,我希望它们存储在数据库中。基本上,我希望在XML中查找所有状态并捕获这些值

            <loop1>
                <loop2>
                    <ID>001</ID>
                    <status code="A">approve</status>
                    </loop2>
                    </loop1>

但是,当我尝试读取innertext时,我发现错误对象引用未设置实例。

这不是最优雅的方法,但您很接近:

我在XML中又添加了一个状态节点


这不是最优雅的方法,但您已经接近:

我在XML中又添加了一个状态节点


你已经试过什么了吗?你能给我们看一些代码吗?你想在C#应用程序中这样做,还是数据库系统应该解决这个问题(哪个RDBMS-产品和版本)???您可能会读到关于深度搜索
XPath
的内容,比如
//status
…我尝试使用XMLelement和XMLdocument,但当我尝试提取状态时,它会将对象引用未设置为实例错误。我基本上希望捕获所有状态值,然后在状态被批准时签入数据库,如果状态是拒绝,那么你已经试过什么了吗?你能给我们看一些代码吗?你想在C#应用程序中这样做,还是数据库系统应该解决这个问题(哪个RDBMS-产品和版本)???您可能会读到关于深度搜索
XPath
的内容,比如
//status
…我尝试使用XMLelement和XMLdocument,但当我尝试提取状态时,它会将对象引用未设置为实例错误。我基本上希望捕获所有状态值,然后在状态被批准时签入数据库,然后bla bla else如果状态为deny,则bla bla
XmlDocument xDoc = new XmlDocument();
              xDoc.LoadXml(xmlValue);--xmlValue has my XML file content
              XmlElement xelRoot = xDoc.DocumentElement;
              XmlNodeList xnlNodes = xelRoot.SelectNodes("/status");
         foreach (XmlNode xNode in xnlNodes)
              {
                  string ostatus = xNode["status"].InnerText;
              } 
string YourXml = "<loop1><loop2><ID>001</ID><status code = \"A\">approve</status><status code = \"B\">deny</status></loop2></loop1>";

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(YourXml); 
    XmlElement xelRoot = xDoc.DocumentElement;
XmlNodeList xnlNodes = xelRoot.SelectNodes("//status"); //Deep search!!
var sb = new StringBuilder();
foreach (XmlNode xNode in xnlNodes) {
    sb.AppendLine( string.Format("code='{0}' value='{1}'", xNode.Attributes["code"].Value,xNode.InnerText));
}
string result = sb.ToString();
code = 'A' value = 'approve'
code = 'B' value = 'deny'