Синтаксический анализ 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());
}
}
}