如何使用C#获取多个Childnode innertext?

如何使用C#获取多个Childnode innertext?,c#,sql,xml,xmlnode,C#,Sql,Xml,Xmlnode,我正在读取XML文件并将其存储在一个表中,但不幸的是,我没有获得所有子节点innertext值,请查找我的XML文件和csharp编码并建议解决方案 XML: 我不知道我在代码上哪里做错了 第一个查询文本将为所有三行重复插入 Please check the first hierarchy. 这应该起作用: XmlNodeList xnList2 = xml.SelectNodes("/roor/body/queries"); f

我正在读取XML文件并将其存储在一个表中,但不幸的是,我没有获得所有子节点innertext值,请查找我的XML文件和csharp编码并建议解决方案

XML:

我不知道我在代码上哪里做错了

第一个查询文本将为所有三行重复插入

Please check the first hierarchy.
这应该起作用:

    XmlNodeList xnList2 = xml.SelectNodes("/roor/body/queries");
                            foreach (XmlNode xn2 in xnList2)
                            {
                                foreach (XmlNode childNode in xn2.ChildNodes)
                                {

                                    queries = childNode.InnerText;
                                    // text should return only first query text, but I need all the query text
                                    query_string = "INSERT INTO Customer_Queries values (@query)";
                                    using(SqlConnection myConnection = new SqlConnection(constr))
                                    {
                                        myConnection.Open();
                                        using(SqlCommand myCommand = new SqlCommand(query_string, myConnection))
                                        {
                                           myCommand.parameters.AddWithValue("@query", queries);
                                           myCommand.ExecuteNonQuery();
                                        }
                                    }        
                                }
                            }

在foreach语句中声明一个变量
XmlNode childNode
,该变量将引用
xn2
中的每个节点。因此,您需要使用
childNode
而不是
xn2
,因为
xn2
的值永远不会改变。这就是为什么使用
xn2[“query”]时总是得到相同的值
而不是
childNode.InnerText
,因此您反复使用相同的值,因为xn2没有改变。我想补充一点,如果没有准备好的语句,就不应该发出任何sql请求。“/roor/body/querys”或“/root/body/querys”?在第二个Foreach中,
xn2[“query”]
指的是
1请在每个循环步骤中检查第一个层次结构。1
。您必须使用在foreach语句中声明的变量childNode作为旁白,您不应该真正使用字符串连接来创建SQL查询。仔细看看。谢谢大家,它像一个符咒一样工作,@PaulZahra,它的根(打字错误),它给出了以下输出。。。1请检查第一个层次结构。12请检查第二个层次结构。12 3请检查第三个层次结构。13是的,请尝试使用childNode.Value,而不是childNode.InnerText。很抱歉,我现在无法为您测试它。奇怪的是,value没有给出任何值,即它为空,因此解决方案是删除firstChild和lastChild的值。它不是很干净,但有了这种xml结构,它是我唯一想到的东西。获取
childNode.InnerText
的值,然后
查询.Replace(childNode.FirstChild.InnerText,string.Empty)
,LastChildnode.RemoveChild(childNode.FirstChild)也是如此;和childNode.RemoveChild(childNode.LastChild);做这个把戏,这里有一把小提琴。。。
Please check the first hierarchy.
    XmlNodeList xnList2 = xml.SelectNodes("/roor/body/queries");
                            foreach (XmlNode xn2 in xnList2)
                            {
                                foreach (XmlNode childNode in xn2.ChildNodes)
                                {

                                    queries = childNode.InnerText;
                                    // text should return only first query text, but I need all the query text
                                    query_string = "INSERT INTO Customer_Queries values (@query)";
                                    using(SqlConnection myConnection = new SqlConnection(constr))
                                    {
                                        myConnection.Open();
                                        using(SqlCommand myCommand = new SqlCommand(query_string, myConnection))
                                        {
                                           myCommand.parameters.AddWithValue("@query", queries);
                                           myCommand.ExecuteNonQuery();
                                        }
                                    }        
                                }
                            }