如何使用C#获取多个Childnode innertext?
我正在读取XML文件并将其存储在一个表中,但不幸的是,我没有获得所有子节点innertext值,请查找我的XML文件和csharp编码并建议解决方案 XML: 我不知道我在代码上哪里做错了 第一个查询文本将为所有三行重复插入如何使用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
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();
}
}
}
}