如何使用 C# 获取多个 Childnode innertext?
How to Get more than one Childnode innertext using C#?
我正在读取 XML 文件并存储在 table 中,但不幸的是我没有得到所有子节点的内部文本值,请找到我的 xml 文件和 csharp 编码和建议解决方案。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:ce="www.dummy.com" xmlns:mml="www.dummy.com">
<head>
<title></title>
</head>
<body>
<queries>
<query><label>1</label>Please check the first hierarchy.<page>1</page></query>
<query><label>2</label>Please check the second hierarchy.<page>12</page></query>
<query><label>3</label>Please check the third hierarchy.<page>13</page></query>
</queries>
</body>
</root>
Csharp 编码
XmlNodeList xnList2 = xml.SelectNodes("/root/body/queries");
foreach (XmlNode xn2 in xnList2)
{
foreach (XmlNode childNode in xn2.ChildNodes)
{
queries =xn2["query"].InnerText;
// text should return only first query text, but I need all the query text
query_string = "INSERT INTO Customer_Queries values ('"+ queries + "')";
SqlConnection myConnection = new SqlConnection(constr);
myConnection.Open();
SqlCommand myCommand = new SqlCommand(query_string, myConnection);
myCommand.ExecuteNonQuery();
myConnection.Close();
}
我不知道我的代码哪里做错了。
第一个查询文本为所有三行重复插入
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
的值永远不会改变。这就是为什么你总是得到相同的值
我正在读取 XML 文件并存储在 table 中,但不幸的是我没有得到所有子节点的内部文本值,请找到我的 xml 文件和 csharp 编码和建议解决方案。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:ce="www.dummy.com" xmlns:mml="www.dummy.com">
<head>
<title></title>
</head>
<body>
<queries>
<query><label>1</label>Please check the first hierarchy.<page>1</page></query>
<query><label>2</label>Please check the second hierarchy.<page>12</page></query>
<query><label>3</label>Please check the third hierarchy.<page>13</page></query>
</queries>
</body>
</root>
Csharp 编码
XmlNodeList xnList2 = xml.SelectNodes("/root/body/queries");
foreach (XmlNode xn2 in xnList2)
{
foreach (XmlNode childNode in xn2.ChildNodes)
{
queries =xn2["query"].InnerText;
// text should return only first query text, but I need all the query text
query_string = "INSERT INTO Customer_Queries values ('"+ queries + "')";
SqlConnection myConnection = new SqlConnection(constr);
myConnection.Open();
SqlCommand myCommand = new SqlCommand(query_string, myConnection);
myCommand.ExecuteNonQuery();
myConnection.Close();
}
我不知道我的代码哪里做错了。
第一个查询文本为所有三行重复插入
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
的值永远不会改变。这就是为什么你总是得到相同的值