Как найти XML-тег с определенным атрибутом (в C #)
Вопрос
Мне нужно получить список тегов, содержащих определенный атрибут.Я использую DITA xml, и мне нужно найти все теги, у которых есть атрибут href.
Проблема здесь в том, что атрибут может находиться внутри любого тега, поэтому XPath в этом случае работать не будет.Например, тег изображения может содержать ссылку href, тег topicref может содержать ссылку 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));