gpt4 book ai didi

C# Xpath 只返回第一个元素

转载 作者:行者123 更新时间:2023-12-03 17:25:37 24 4
gpt4 key购买 nike

我正在使用 HTMLAgilityPack 来读取和加载 XML 文件。加载文件后,我想将其中的值插入数据库。

XML 看起来像这样:

 <meeting>
<jobname></jobname>
<jobexperience></jobexperience>
</meeting>

我正在尝试在 foreach 循环中使用 XPath 语句来完成此操作,如下所示:
DataTable dt = new DataTable();
//Add Data Columns here
dt.Columns.Add("JobName");
dt.Columns.Add("JobExperience");

// Create a string to read the XML tag "job"
string xPath_job = "//job";
string xPath_job_experience = "//jobexperience";


/* Use a ForEach loop to go through all 'meeting' tags and get the values
from the 'JobName' and 'JobExperience' tags */

foreach (HtmlNode planned_meeting in doc.DocumentNode.SelectNodes("//meeting"))
{
DataRow dr = dt.NewRow();

dr["JobName"] = planned_meeting.SelectSingleNode(xPath_job).InnerText;

dr["JobName"] = planned_meeting.SelectSingleNode(xPath_job_experience).InnerText;

dt.Rows.Add(dr);

}

所以问题是,即使 foreach 循环遍历每个“ session ”标签,它也只从第一个“ session ”标签中获取值。

任何帮助将不胜感激!

最佳答案

So the problem is that even though the foreach loop is going through every 'meeting' tag, it's getting the values from only the first 'meeting' tag.



是的,这就是代码的作用。 XPath operator // 选择整个文档中的所有元素,例如 //job全选 job整个文档中的元素。

因此,在您的 foreach 循环中,您选择所有 meeting整个文档中的元素
doc.DocumentNode.SelectNodes("//meeting"))

然后 - 在循环中 - 你选择所有 //job和所有 //jobexperience整个文档中的元素
string xPath_job = "//job";
string xPath_job_experience = "//jobexperience";

所以你选择所有元素的第一个元素 - 一遍又一遍......因此你只得到第一个元素的印象。

因此,以当前 meeting 的子代的方式更改代码元素被选中(通过删除 // 运算符):
string xPath_job            = "job";
string xPath_job_experience = "jobexperience";

关于C# Xpath 只返回第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45174471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com