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

Мне нужно получить список тегов, которые содержат определенный атрибут. Я использую DITA xml и мне нужно выяснить все теги, имеющие атрибут href.

Проблема здесь в том, что атрибут может быть внутри любого тега, поэтому XPath не будет работать в этом случае. Например, тег изображения может содержать href, тег topicref может содержать href и так далее.

Так что мне нужно получить XmlNodeList (как возвращено методом getElementByTagName). В идеале мне нужен метод getElementByAttributeName, который должен вернуть XmlNodeList.

Ответы [ 2 ]

5 голосов
/ 06 сентября 2010

Я мог бы неправильно понять вашу проблему здесь, но я думаю, что вы могли бы использовать выражение XPath.

var nodes = doc.SelectNodes("//*[@href='pic1.jpg']");

Вышеприведенное должно возвращать все элементы с href='pic1.jpg', где doc - XmlDocument

3 голосов
/ 06 сентября 2010

Если вы находитесь на C #, тогда вам может подойти следующий подход:

XDocument document = XDocument.Load(xmlReader);
XAttribute xa = new XAttribute("href", "pic1.jpg");
var attrList = document.Descendants().Where (d => d.Attributes().Contains(xa));
...