Как найти XML-тег с определенным атрибутом (в C #)

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

  •  01-10-2019
  •  | 
  •  

Вопрос

Мне нужно получить список тегов, содержащих определенный атрибут.Я использую 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));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top