【发布时间】:2017-07-18 18:28:17
【问题描述】:
我正在使用 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 循环遍历每个“会议”标签,它也只从第一个“会议”标签中获取值。
任何帮助将不胜感激!
【问题讨论】:
-
我认为您的 xpath 查询应该只是
jobname和jobexperience,没有斜杠。 -
是的,xPath_* 变量不能有斜线。
-
查看 this handy page 获取 XPath 备忘单。
-
@BradleyUffner Bravo!在 1 行中回答。
-
我输入了一个正确的答案,但 zx485 打败了我。无论如何,我更喜欢他的解释。