c# - एक्सएमएल फाइलों का विश्लेषण कैसे करता है?




xml (8)

अतिरिक्त में आप XPath चयनकर्ता का निम्न तरीके से उपयोग कर सकते हैं (विशिष्ट नोड्स का चयन करने का आसान तरीका):

XmlDocument doc = new XmlDocument();
doc.Load("test.xml");

var found = doc.DocumentElement.SelectNodes("//book[@title='Barry Poter']"); // select all Book elements in whole dom, with attribute title with value 'Barry Poter'

// Retrieve your data here or change XML here:
foreach (XmlNode book in nodeList)
{
  book.InnerText="The story began as it was...";
}

Console.WriteLine("Display XML:");
doc.Save(Console.Out);

दस्तावेज़ीकरण

सी # में एक्सएमएल फाइलों को पार्स करने का कोई आसान तरीका है? यदि ऐसा है तो क्या?


आप XmlDocument का उपयोग कर सकते हैं और उन गुणों से डेटा को मैनिपुलेट या पुनर्प्राप्त करने के लिए कर सकते हैं जिन्हें आप एक्सएमएल कक्षाओं में लिंक कर सकते हैं।


आप इस पुस्तकालय System.Xml.Linq का उपयोग कर XML को पार्स कर सकते हैं। नीचे एक नमूना कोड है जिसका उपयोग मैं एक एक्सएमएल फ़ाइल को पार्स करने के लिए करता था

public CatSubCatList GenerateCategoryListFromProductFeedXML()
{
    string path = System.Web.HttpContext.Current.Server.MapPath(_xmlFilePath);

    XDocument xDoc = XDocument.Load(path);

    XElement xElement = XElement.Parse(xDoc.ToString());


    List<Category> lstCategory = xElement.Elements("Product").Select(d => new Category
    {
        Code = Convert.ToString(d.Element("CategoryCode").Value),
        CategoryPath = d.Element("CategoryPath").Value,
        Name = GetCateOrSubCategory(d.Element("CategoryPath").Value, 0), // Category
        SubCategoryName = GetCateOrSubCategory(d.Element("CategoryPath").Value, 1) // Sub Category
    }).GroupBy(x => new { x.Code, x.SubCategoryName }).Select(x => x.First()).ToList();

    CatSubCatList catSubCatList = GetFinalCategoryListFromXML(lstCategory);

    return catSubCatList;
}

मुझे यकीन नहीं है कि "एक्सएमएल पार्स करने के लिए सबसे अच्छा अभ्यास" मौजूद है या नहीं। विभिन्न स्थितियों के लिए उपयुक्त कई तकनीकें हैं। उपयोग करने का एक तरीका ठोस परिदृश्य पर निर्भर करता है।

आप LINQ to XML , XmlReader , XPathNavigator या यहां तक ​​कि नियमित अभिव्यक्तियों के साथ भी जा सकते हैं। यदि आप अपनी जरूरतों को विस्तृत करते हैं, तो मैं कुछ सुझाव देने का प्रयास कर सकता हूं।


यदि आप .NET 2.0 का उपयोग कर रहे हैं, तो XmlReader और इसके उप-वर्ग XmlTextReader , और XmlValidatingReader आज़माएं। वे एक तेज, हल्के (स्मृति उपयोग, इत्यादि) प्रदान करते हैं, एक एक्सएमएल फ़ाइल को पार्स करने के लिए आगे-एकमात्र तरीका।

यदि आपको XPath क्षमताओं की आवश्यकता है, तो XPathNavigator आज़माएं। यदि आपको स्मृति में पूरे दस्तावेज़ की आवश्यकता है तो XmlDocument आजमाएं।


यदि आप .NET 3.5 या उच्चतर हैं तो मैं LINQ से XML का उपयोग करूंगा।


यह बहुत सरल है। मुझे पता है कि ये मानक तरीके हैं, लेकिन आप इससे बेहतर निपटने के लिए अपनी खुद की लाइब्रेरी बना सकते हैं।

यहाँ कुछ उदाहरण हैं:

XmlDocument xmlDoc= new XmlDocument(); // Create an XML document object
xmlDoc.Load("yourXMLFile.xml"); // Load the XML document from the specified file

// Get elements
XmlNodeList girlAddress = xmlDoc.GetElementsByTagName("gAddress");
XmlNodeList girlAge = xmlDoc.GetElementsByTagName("gAge"); 
XmlNodeList girlCellPhoneNumber = xmlDoc.GetElementsByTagName("gPhone");

// Display the results
Console.WriteLine("Address: " + girlAddress[0].InnerText);
Console.WriteLine("Age: " + girlAge[0].InnerText);
Console.WriteLine("Phone Number: " + girlCellPhoneNumber[0].InnerText);

इसके अलावा, काम करने के लिए कुछ और तरीके हैं । उदाहरण के लिए, here । और मुझे लगता है कि ऐसा करने के लिए कोई भी सबसे अच्छी विधि नहीं है; आपको हमेशा इसे अपने आप चुनने की ज़रूरत है, जो आपके लिए सबसे उपयुक्त है।






xml