كيفية العثور على علامة XML ذات سمة محددة (في C#)
سؤال
أحتاج إلى الحصول على قائمة بالعلامات التي تحتوي على سمة محددة.أنا أستخدم DITA xml وأحتاج إلى معرفة جميع العلامات التي تحتوي على سمة href.
المشكلة هنا هي أن السمة قد تكون موجودة داخل أي علامة لذلك لن يعمل XPath في هذه الحالة.على سبيل المثال، قد تحتوي علامة الصورة على href، وقد تحتوي علامة themeref على href، وما إلى ذلك.
لذلك أنا بحاجة للحصول على XmlNodeList
(كما أعاده getElementByTagName
طريقة).من الناحية المثالية أحتاج إلى طريقة getElementByAttributeName
يجب أن يعود XmlNodeList
.
المحلول
ربما أساءت فهم مشكلتك هنا، ولكن أعتقد أنه من الممكن استخدام تعبير XPath.
var nodes = doc.SelectNodes("//*[@href='pic1.jpg']");
ما ورد أعلاه يجب أن يعيد كافة العناصر مع href='pic1.jpg'
, ، أين doc
هل XmlDocument
نصائح أخرى
إذا كنت تستخدم C#، فقد يناسبك الأسلوب التالي:
XDocument document = XDocument.Load(xmlReader);
XAttribute xa = new XAttribute("href", "pic1.jpg");
var attrList = document.Descendants().Where (d => d.Attributes().Contains(xa));
لا تنتمي إلى StackOverflow