Вопрос

В настоящее время я использую jdom, чтобы выполнить несколько простых анализа XML, и кажется, что нет ничего безопасного типа - у меня была подобная проблема с использованием встроенного анализатора Java DOM, просто с большим количеством API, чтобы пройти много.

Например, XPath.selectNodes берет Object как его аргумент и возвращает сырье, который просто чувствует себя немного Java 1.1

Есть ли библиотеки Generic-Ized XML и XPath для Java, или есть ли какой-то причиной, почему просто невозможно сделать запросы XPath в безопасном виде?

Это было полезно?

Решение

Если вы знакомы с селекторами CSS на HTML, это может быть приятно знать, что Jsououp. Поддерживает также XML.


Обновлять: Хорошо, это было дано удержание, видимо, очень противоречивый ответ. Это может быть, однако, в конечном итоге будет проще и меньше многословного, чем XPath, когда все, что вы хотите, это выбрать значения узла. API JSUP имеется очень Slick. Давайте дадим немного более конкретным примером. Предполагая, что у вас есть файл XML, который выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="1">
        <name>John Doe</name>
        <age>30</age>
        <address>
            <street>Main street 1</street>
            <city>Los Angeles</city>
        </address>
    </person>
    <person id="2">
        <name>Jane Doe</name>
        <age>40</age>
        <address>
            <street>Park Avenue 1</street>
            <city>New York</city>
        </address>
    </person>
</persons>

Тогда вы можете пройти его, как следует следующим образом:

Document document = Jsoup.parse(new File("/persons.xml"), "UTF-8");

Element person2 = document.select("person[id=2]").first();
System.out.println(person2.select("name").text());

Elements streets = document.select("street");
for (Element street : streets) {
    System.out.println(street.text());
}

какие выходы

Джейн Доу Главная улица 1 Park Avenue 1

Обновление 2.: Поскольку JSUP 1.6.2, который был выпущен в марте 2012 года, XML Parsing официально поддерживается API JSUP.

Другие советы

AFAIK Все XML-запросы в Java являются неиспользуемыми и большинством являются совместимыми Java 1.3. Что сказал, что мой любимый парсер / генератор является XML Pull Parser (XMLPP) Системный парсер. Я полагаю, что Java имеет xmlstreameamreader и xmlstreamwriter, если вы используете 1.6, которые почти такие же, как библиотека XMLPP. Мне особенно нравится, что я могу написать метод getfoo, который принимает поток читателя и тянет от него и возвращает объект FOO. Это своего рода лучшее между DOM и SAX. Я думаю, что он может быть упомянутым как Stax некоторыми.
Я получаю немного Ramble-Y, так что я ухожу сейчас

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top