Xpath - Как получить все названия атрибута и значения элемента

Я использую xpath в Java. Я хочу получить все атрибуты (имя и Значение) элемента. Я нашел, что запрос получил значения атрибута элемента, теперь я хочу получить одни только названия атрибута или имена и значения в едином запросе.

<Element1 ID="a123" attr1="value1" attr2="value2" attr3="value3" attr4="value4" attr5="value5" />

Здесь с помощью следующего запроса для получения всех значений атрибута Element1 XmlUtils.getAttributes(Path, String.format("//*/@*")); Используя этот формат //*/@* Я могу получить значения. результат был бы value1 value2 value3 value4 value5 a123

Теперь я хочу знать, что запрос заставляет все названия атрибута или запрос получать все имя атрибутов и значение.

12
задан Lachlan Roche 17 March 2010 в 08:35
поделиться

1 ответ

Чтобы выбрать все атрибуты всех элементов в документе с именем Element1: //Element1/@*. Это вернет nodeset, содержащий атрибуты узлов. Затем можно выполнить итерацию по набору узлов.

Если у вас уже есть контекстный узел и вы хотите найти результаты под ним, запрос будет .//Element1/@*. Обычно это более эффективно, чем запрос ко всему документу.

// input is an InputSource or a DOM node
NodeList nl = (NodeList) xpath.evaluate("//Element1/@*", input, XPathConstants.NODESET);
int length = nl.getLength();
for( int i=0; i<length; i++) {
    Attr attr = (Attr) nl.item(i);
    String name = attr.getName();
    String value = attr.getValue();
}

А поиск всех элементов с заданным именем может быть более эффективным, если использовать getElementsByTagName.

NodeList nl = document.getElementsByTagName("Element1"); 

Чтобы получить атрибуты конкретного элемента, выполните итерацию его свойства attributes.

NamedNodeMap nl = element.getAttributes();
int length = nl.getLength();
for( int i=0; i<length; i++) {
    Attr attr = (Attr) nl.item(i);
    String name = attr.getName();
    String value = attr.getValue();
}
29
ответ дан 2 December 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: