Come trovare un tag XML con un attributo specifico (in C #)
Domanda
Ho bisogno di ottenere una lista di tag che contengono un attributo specifico. Sto usando DITA XML e ho bisogno di scoprire tutti i tag che ha un attributo href.
Il problema qui è che l'attributo può essere all'interno di ogni tag in modo XPath non funziona in questo caso. Ad esempio, un tag di immagine può contenere un href, un tag topicref può contenere un href, e così via.
Così ho bisogno di ottenere un XmlNodeList
(come restituito dal metodo getElementByTagName
). Idealmente ho bisogno di un metodo di getElementByAttributeName
che dovrebbe restituire XmlNodeList
.
Soluzione
I potrebbe avere frainteso il problema qui, ma penso che si possa usare un'espressione XPath.
var nodes = doc.SelectNodes("//*[@href='pic1.jpg']");
Quanto sopra deve restituire tutti gli elementi con href='pic1.jpg'
, dove doc
rappresenta l'XmlDocument
Altri suggerimenti
Se sei in C #, quindi il seguente lavoro potrebbe approccio per voi:
XDocument document = XDocument.Load(xmlReader);
XAttribute xa = new XAttribute("href", "pic1.jpg");
var attrList = document.Descendants().Where (d => d.Attributes().Contains(xa));