अद्यतन 2: यहां एक कोड उदाहरण है एचटीएमएल एजिलिटी पैक का उपयोग करके विशेषताओं के मूल्य कैसे प्राप्त करें:
http://htmlagilitypack.codeplex.com/wikipage?title=Examples
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link.Attributes["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
आप स्पष्ट रूप से अपनी आवश्यकताओं के लिए इस कोड अनुकूलित करने की आवश्यकता - उदाहरण के लिए आप विशेषताओं में बदलाव नहीं करेगी, लेकिन सिर्फ att.Value
का प्रयोग करेंगे।
अद्यतन: आप भी इस प्रश्न पर विचार कर सकता:
Selecting attribute values with html Agility Pack
आपकी समस्या है सबसे अधिक संभावना एक डिफ़ॉल्ट नाम स्थान समस्या - "XPath के लिए खोज डिफ़ॉल्ट नामस्थान सी # "और आपको कई अच्छे समाधान मिलेंगे (संकेत: 01 के अधिभार का उपयोग करें जिसमें XmlNamespaceManager
तर्क है)।
निम्न कोड से पता चलता एक एक दस्तावेज़ में एक विशेषता के लिए क्या हो जाता है में "कोई नाम स्थान":
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<input value='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</input>");
XmlNode root = doc.DocumentElement;
XmlNode value = doc.SelectNodes("//input/@value")[0];
Console.WriteLine("Inner text: " + value.InnerText);
Console.WriteLine("InnerXml: " + value.InnerXml);
Console.WriteLine("OuterXml: " + value.OuterXml);
Console.WriteLine("Value: " + value.Value);
}
}
इस एप्लिकेशन को चलने से परिणाम है:
Inner text: novel
InnerXml: novel
OuterXml: value="novel"
Value: novel
अब, एक दस्तावेज़ के लिए जो डिफ़ॉल्ट नामस्थान में है:
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<input xmlns='some:Namespace' value='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</input>");
XmlNode root = doc.DocumentElement;
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("x", "some:Namespace");
XmlNode value = doc.SelectNodes("//x:input/@value", nsmgr)[0];
Console.WriteLine("Inner text: " + value.InnerText);
Console.WriteLine("InnerXml: " + value.InnerXml);
Console.WriteLine("OuterXml: " + value.OuterXml);
Console.WriteLine("Value: " + value.Value);
}
}
इस अनुप्रयोग चल रहा है फिर से वांछित परिणाम पैदा करता है:
Inner text: novel
InnerXml: novel
OuterXml: value="novel"
Value: novel
क्या आपने 'नोड [0]। वैल्यू' का प्रयास किया था? – Oded
नहीं, क्योंकि मैं 'नोड [0] .nernerText' –
द्वारा मान प्राप्त करना चाहता हूं लेकिन एक विशेषता में' इनरटेक्स्ट 'नहीं है। – Oded