Comment trouver une balise XML avec un attribut spécifique (en C #)
Question
Je dois obtenir une liste des balises contenant un attribut spécifique. J'utilise xml DITA et je dois trouver tous les tags qui a un attribut href.
Le problème ici est que l'attribut peut être à l'intérieur toute balise afin XPath ne fonctionnera pas dans ce cas. Par exemple, une balise d'image peut contenir un href, une étiquette de topicref peut contenir un href, et ainsi de suite.
Je dois donc obtenir un XmlNodeList
(retourné par la méthode getElementByTagName
). Idéalement je besoin d'un getElementByAttributeName
méthode qui devrait revenir XmlNodeList
.
La solution
Je pourrais être mal compris votre problème ici, mais je pense que vous pourriez utiliser une expression XPath.
var nodes = doc.SelectNodes("//*[@href='pic1.jpg']");
Le doit revenir au-dessus de tous les éléments avec href='pic1.jpg'
, où doc
est le XmlDocument
Autres conseils
Si vous êtes sur C #, le travail d'approche pourrait pour vous:
XDocument document = XDocument.Load(xmlReader);
XAttribute xa = new XAttribute("href", "pic1.jpg");
var attrList = document.Descendants().Where (d => d.Attributes().Contains(xa));