كيفية العثور على علامة XML ذات سمة محددة (في C#)

StackOverflow https://stackoverflow.com/questions/3651506

  •  01-10-2019
  •  | 
  •  

سؤال

أحتاج إلى الحصول على قائمة بالعلامات التي تحتوي على سمة محددة.أنا أستخدم 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));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top