Mit c # 4.0 und htmlagilitypack kann ich Werte innerhalb bestimmter Tabellen lesen. Ich meine, sagen wir, es gibt 10 Tabellen und ich möchte Werte von 6 oder ich habe Tabellen-ID lesen.
Oder sagen wir, ich möchte td-Wert nach bestimmten td lesen.
Oder Tabelle, die nach bestimmten div oder Element oder Text kommt. Sind diese möglich?
Alles, was Sie gefragt haben, könnte relativ einfach erledigt werden. Es spielt keine Rolle, dass seine Dokumentation fehlt, es sollte XML und der XmlDocument
Implementierung des Netzwerks sowohl in der Verwendung als auch in der Funktionalität ähnlich sein.
Wie kann ich Werte in bestimmten Tabellen lesen? Nehmen wir an, es gibt 10 Tabellen und ich möchte Werte von 6 oder ich habe Tabellen-ID lesen.
Die 6. Tabelle finden:
// XPath
var table6 = doc.DocumentNode.SelectSingleNode("//table[6]");
// LINQ
var table6 = doc.DocumentNode.Descendants("table").Skip(5).FirstOrDefault();
Ermitteln der Tabelle / des Elements nach ID:
var myTable = doc.GetElementById("myTable");
// XPath
var myTable = doc.DocumentNode.SelectSingleNode("//table[@id='myTable']");
var myTable = doc.DocumentNode.SelectSingleNode("//*[@id='myTable']");
// LINQ
var myTable = doc.DocumentNode
.Descendants("table")
.Where(table => table.Attributes.Contains("id"))
.SingleOrDefault(table => table.Attributes["id"].Value == "myTable");
var myTable = doc.DocumentNode
.Descendants()
.Where(e => e.Attributes.Contains("id"))
.SingleOrDefault(e => e.Attributes["id"].Value == "myTable");
var myTable = doc.DocumentNode
.Descendants("table")
.SingleOrDefault(table => table.GetAttributeValue("id", null) == "myTable");
var myTable = doc.DocumentNode
.Descendants()
.SingleOrDefault(e => e.GetAttributeValue("id", null) == "myTable");
Nehmen wir an, ich möchte den td-Wert nach bestimmten td lesen.
// XPath
var certainTd = table6.SelectSingleNode("//td[2]");
var tdAfterCertainTd = certainTd.SelectSingleNode("following-sibling::td[1]");
// LINQ (not so easy)
var certainTd = table6.Descendants("td").Skip(1).FirstOrDefault();
var tdAfterCertainTd = certainTd.NextSibling;
while (tdAfterCertainTd != null)
{
if (tdAfterCertainTd.Name == "td")
break;
tdAfterCertainTd = tdAfterCertainTd.NextSibling;
}
Tabelle kommt nach bestimmten div oder Element oder Text.
// XPath
var certainDiv = doc.DocumentNode.SelectSingleNode("//div[1]");
var tableAfterCertainDiv = certainDiv.SelectSingleNode("following-sibling::table[1]");
// LINQ (not so easy)
var certainDiv = doc.DocumentNode.Descendants("div").FirstOrDefault();
var tableAfterCertainDiv = certainDiv.NextSibling;
while (tableAfterCertainDiv != null)
{
if (tableAfterCertainDiv.Name == "table")
break;
tableAfterCertainDiv = tableAfterCertainDiv.NextSibling;
}
Sie sollten einige Muster bemerken.