Синтаксический анализ XML с Java: <element name = "doctype">

Возможный дубликат:
Как получить значение элемента XML с помощью Java?

Я пытаюсь проанализировать XML-файл с Java с помощью DOM. XML выглядит так:

<documents>
  <document>
    <element name="doctype">
      <value>Circular</value>
    </element>
  </document>
</documents>

Получить корневой узел "документы", а также дочерний узел "документ" легко. Но я не могу получить значение элемента с именем "doctype" (я хочу сохранить значение "Circular" в базе данных). Может кто-то помочь мне, пожалуйста?

1 ответ

Решение

Вы можете использовать следующий XPath для получения данных, которые вы ищете:

/documents/document/element[@name='doctype']/value

демонстрация

Следующий демонстрационный код демонстрирует, как выполнить этот XPath для вашей DOM. Это приложение будет работать в любой стандартной версии Java SE 5 (или более новой).

package forum11578831;

import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.Document;

public class Demo {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = domFactory.newDocumentBuilder();
        Document dDoc = builder.parse("src/forum11578831/input.xml");

        XPath xPath = XPathFactory.newInstance().newXPath();
        String string = (String) xPath.evaluate("/documents/document/element[@name='doctype']/value", dDoc, XPathConstants.STRING);
        System.out.println(string);
    }

}

Input.xml

Я расширил документ XML, чтобы он содержал element элементы с name атрибуты с другими значениями, которые doctype чтобы продемонстрировать, что XPath работает.

<documents>
  <document>
    <element name="foo">
      <value>FOO</value>
    </element>
    <element name="doctype">
      <value>Circular</value>
    </element>
    <element name="bar">
      <value>BAR</value>
    </element>
  </document>
</documents>

Выход

Результатом выполнения XPath является очень String ты ищешь:

Circular
Другие вопросы по тегам