मुझे एक एक्सएमएल संरचना मिली:
& lt; siteNode नियंत्रक = "एक" क्रिया = "B" शीर्षक = "" & gt; & Lt; siteNode नियंत्रक = "ए" एक्शन = "बीबी" शीर्षक = "" / & gt; & Lt; siteNode नियंत्रक = "सीसी" एक्शन = "डीडी" शीर्षक = "" & gt; & Lt; siteNode नियंत्रक = "eee" action = "fff" शीर्षक = "" / & gt; & Lt; / siteNode & gt; & Lt; / siteNode & gt; से
मुझे ऐसा कुछ मिला:
XElement doc = XElement.Load ("पथ"); वरीयता = doc.Elements ("siteNode")। जहां (माता पिता = & gt; माता-पिता। एलेमेंट्स ("साइटनोड")। कोई भी (बच्चे = & gt; बच्चा। विशेषता ("क्रिया")। मूल्य == क्रियानाम & amp; Child.Attribute ("नियंत्रक")। मान == ControlerName)); जो मेरे नोड और उसके माता-पिता को देता है मैं केवल नोड के माता-पिता कैसे ही प्राप्त कर सकता हूं, लेकिन इसके "दादा दादी" भी कह सकता हूं, मेरा मतलब मूल के माता-पिता आदि का है। तो मेरे एक्सएमएल के साथ यह होगा:
& lt; siteNode नियंत्रक = "ईी" एक्शन = "एफएफएफ" शीर्षक = "" / & gt; माता-पिता और साइटनोड नियंत्रक = "सीसी" एक्शन = "डीडी" शीर्षक = "" & gt; अभिभावक और लेफ्टिनेंट; साइटनोड नियंत्रक = "ए" एक्शन = "बी" शीर्षक = "" & gt; स्पष्ट उत्तर है कि जब तक यह अशक्त न हो, तब तक उस लिनक अभिव्यक्ति का उपयोग करना है, लेकिन क्या कोई बेहतर (क्लीनर) तरीका है?
पूर्वजों और स्वयं पद्धति ठीक उसी तरह की है जो आपको चाहिए, यह सभी मूल स्तरों पर एक तत्व के पूर्वजों को पाता है। वंश विधि किसी भी स्तर पर नाम से तत्व पाती है और पहले ऑर डेफॉल्ट पद्धति का पहला तत्व रिटर्न देता है जो मापदंड या नल से मेल खाता है यदि कोई मिलान तत्व नहीं मिलता है:
XElement el = doc.Descendants ("siteNode")। FirstOrDefault (Child = & gt; child.Attribute ("action")। Value == ActionName & amp; child.Attribute ("नियंत्रक")। Value == ControlerName); If (el! = Null) {var result2 = el.AncestorsAndSelf (); }
Comments
Post a Comment