我有一个 xml 视图:
<?xml version='1.0' encoding='utf-8'?>
<tasks>
<task file_id="3406" cont_name="D:\Data\cont\con1.dat">
<offset cont_offset="596672" file_size="16209"></offset>
<offset cont_offset="3" file_size="5"></offset>
<offset cont_offset="34534" file_size="3234"></offset>
</task>
<task file_id="3608" cont_name="D:\Data\cont\con2.dat">
<offset cont_offset="39199605" file_size="101394"/></offset>
</task>
<task file_id="13435" cont_name="D:\Data\cont\con3.dat">
<offset cont_offset="28936" file_size="14900"/></offset>
</task>
</tasks>
我的xml阅读代码:
//Находим нужные параметры из task.xml------------------------------------------
SAXBuilder parser = new SAXBuilder();
org.jdom2.Document xmlDoc = parser.build(new File("D:\\Data\\task\\taskMas.xml"));
//Получить все подэлементы <task>
List children = xmlDoc.getRootElement().getChildren();
Iterator i = children.iterator();
while(i.hasNext()){ //Проход по всем подэлементам <task>
Element nowTask = (Element) i.next(); //Текущий child элемента <task>
String[] paramsXml = new String[2]; //Параметры для чтения контейнера
System.out.println(nowTask.getName());
//Параметры строчки <task...>
paramsXml[0] = nowTask.getAttributeValue("file_id");
paramsXml[1] = nowTask.getAttributeValue("cont_name");
//List из offset и отступов
List<Content> offsetContent = nowTask.getContent();
} //Переход на другую строчку
我可以访问任务根元素,并获取任务元素:
//Получить все подэлементы <task>
List children = xmlDoc.getRootElement().getChildren();
然后我逐个元素地遍历迭代器。我有任务元素的当前子元素
Element nowTask = (Element) i.next(); //Текущий child элемента <task>
但我无法从嵌套在任务中的 xml 中获取行
<offset cont_offset="596672" file_size="16209"></offset>
<offset cont_offset="3" file_size="5"></offset>
<offset cont_offset="34534" file_size="3234"></offset>
为此,我尝试使用
//List из offset и отступов
List<Content> offsetContent = nowTask.getContent();
但是我无法将内容作为元素访问以获取属性和值。同时,我知道这些嵌套的行作为内容存储在 nowTask 中。(见图)
告诉我如何访问这些嵌套元素并获取它们的属性?也许最初,我做错了什么,告诉我怎么做,提前谢谢。
曲线
xml
:关闭的结构再次关闭,应该是这样的:
或者
事实证明:
我对循环进行了一些优化: