Синтаксический анализ XML с использованием JDOM (значение узла и атрибута)

Вот пример XML и, скажем, я хочу извлечь данные "DEF". Любая идея, как извлечь путем объединения значения узла и атрибута, т.е. Node должен быть "Контейнер", а значение атрибута должно быть "2"? Я новичок в разборе JDOM и XML. Пожалуйста, дайте ваши предложения.

<?xml version="1.0"?>
<Product>
    <Property>
        <Container value="1">ABC</Container>
        <Container value="2">DEF</Container>
        <Container value="3">GHI</Container>
    </Property>
</Product>

1 ответ

Решение

Как это

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.xml.sax.Attributes;

public class ReadXMLFile {
    public static void main(String[] args) {

        SAXBuilder builder = new SAXBuilder();
        File xmlFile = new File("src/jdom.xml");

        try {

            Document document = (Document) builder.build(xmlFile);
            Element rootNode = document.getRootElement();
            Element element = rootNode.getChild("Property");
            List list = element.getChildren("Container");

            for (int i = 0; i < list.size(); i++) {

                Element node = (Element) list.get(i);

                Attribute value = node.getAttribute("value");
                if ((value.getValue().equals("2"))) {
                    System.out.println(value.getValue());

                    System.out.println("values : " + node.getText());
                }

            }

        } catch (IOException io) {
            System.out.println(io.getMessage());
        } catch (JDOMException jdomex) {
            System.out.println(jdomex.getMessage());
        }
    }
}
Другие вопросы по тегам