Ich verwende HTMLAgilityPack zum Lesen und Laden einer XML-Datei. Nachdem die Datei geladen ist, möchte ich die Werte daraus in eine Datenbank einfügen.C# Xpath gibt nur das erste Element zurück
XML sieht wie folgt aus:
<meeting>
<jobname></jobname>
<jobexperience></jobexperience>
</meeting>
Ich versuche, dies mit XPath-Anweisungen innerhalb einer foreach-Schleife zu erreichen wie hier zu sehen:
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);
}
Das Problem ist also, dass, obwohl die foreach Die Schleife durchläuft alle Besprechungstags, sie ruft nur die Werte der ersten Besprechung ab.
Jede Hilfe würde sehr geschätzt werden!
Ich denke, Ihre XPath-Abfragen sollten nur sein 'Jobname 'und' jobexperience', ohne die Schrägstriche. –
Yup xPath_ * -Variablen dürfen keine Schrägstriche enthalten. – StuartLC
Siehe [diese handliche Seite] (https://www.w3schools.com/xml/xpath_syntax.asp) für einen XPath-Spickzettel. –