2010-09-06 2 views
1

Мне нужно получить список тегов, которые содержат определенный атрибут. Я использую DITA xml, и мне нужно узнать все теги с атрибутом href.Как найти тег XML с определенным атрибутом (в C#)

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

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

+0

XPATH является * полностью * вариантом. Вы можете использовать '*' в качестве подстановочного соответствия для любого элемента, как демонстрирует ответ @Chris Taylor. –

+0

Спасибо Mads. Я не знал, что мы можем использовать подстановочные знаки в XPATH. – matrix

ответ

5

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

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

выше должен вернуть все элементы с href='pic1.jpg', где doc является XmlDocument

+0

Не возможно, определенно. – annakata

+0

Более общий XPATH для возврата всех элементов, имеющих атрибут href, независимо от его значения: '// * [@ href]' –

3

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

XDocument document = XDocument.Load(xmlReader); 
XAttribute xa = new XAttribute("href", "pic1.jpg"); 
var attrList = document.Descendants().Where (d => d.Attributes().Contains(xa)); 
Смежные вопросы