उदाहरण HTML प्राप्त किए बिना HtmlAgilityPack के साथ एक रूप में सभी इनपुट तत्वों प्राप्त करने के लिए:कैसे एक अशक्त संदर्भ त्रुटि
<html><body>
<form id="form1">
<input name="foo1" value="bar1" />
<!-- Other elements -->
</form>
<form id="form2">
<input name="foo2" value="bar2" />
<!-- Other elements -->
</form>
</body></html>
टेस्ट कोड:
HtmlDocument doc = new HtmlDocument();
doc.Load(@"D:\test.html");
foreach (HtmlNode node in doc.GetElementbyId("form2").SelectNodes(".//input"))
{
Console.WriteLine(node.Attributes["value"].Value);
}
बयान doc.GetElementbyId("form2").SelectNodes(".//input")
मुझे एक अशक्त संदर्भ देता है।
कुछ भी मैंने गलत किया? धन्यवाद। क्योंकि वे अन्य HTML तत्वों ओवरलैप करने की अनुमति है
HtmlNode.ElementsFlags.Remove("form");
HtmlDocument doc = new HtmlDocument();
doc.Load(@"D:\test.html");
HtmlNode secondForm = doc.GetElementbyId("form2");
foreach (HtmlNode node in secondForm.Elements("input"))
{
HtmlAttribute valueAttribute = node.Attributes["value"];
if (valueAttribute != null)
{
Console.WriteLine(valueAttribute.Value);
}
}
डिफ़ॉल्ट HTML चपलता पैक करके पार्स खाली नोड के रूप में रूपों:
क्या इसका मतलब यह है कि, जब तक कि आप 'HtmlNode.ElementsFlags.Remove ("form") का उपयोग न करें;', एचएपी के माध्यम से 'फॉर्म' तत्वों के बच्चों को पार्स करना संभव नहीं है? –
@ केविन, मुझे किसी अन्य विकल्प का ज्ञान नहीं है। –
5 साल बाद - अभी भी एक आवश्यकता है, अभी भी सही जवाब है। इसके अलावा, पैकेज में अभी भी बदला जाना चाहिए ... – getglad