gpt4 book ai didi

java - 在java中解析xml

转载 作者:行者123 更新时间:2023-11-30 07:17:46 26 4
gpt4 key购买 nike

这是我的 xml 文件的一部分

 <IOStatusSummary>
<iostatus_interval_value>
<count>0</count>
<iostatusvalue datainterval="2016-01-16 15:45:30">1.0</iostatusvalue>
<iostatusvalue datainterval="2016-01-16 19:47:29">0.0</iostatusvalue>
<iostatusvalue datainterval="2016-05-16 13:01:07">1.0</iostatusvalue>
<iostatusvalue datainterval="2016-05-16 18:51:33">0.0</iostatusvalue>
<iostatusvalue datainterval="2016-05-27 16:45:50">1.0</iostatusvalue>
<iostatusvalue datainterval="2016-05-27 20:56:00">0.0</iostatusvalue>
<iostatusvalue datainterval="2016-06-10 10:21:28">1.0</iostatusvalue>
<iostatusvalue datainterval="2016-06-10 20:01:17">0.0</iostatusvalue>
</iostatus_interval_value>
</IOStatusSummary>

我想做的是

DocumentBuilder db1 = DocumentBuilder db1 = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is1 = new InputSource();
is1.setCharacterStream(new StringReader(xmlResult));
Document doc1 = db1.parse(is1);

NodeList nList_interval=doc1.getElementsByTagName("iostatus_interval_value");

List on = new ArrayList();
List off = new ArrayList();

for (int =0; i < nList_interval.getLenght(); i ++ ){

Node currentItem2= nList_interval.item(iter);

Element element2 = (Element) currentItem2;

String iostatusvalue = element2.getElementsByTagName("iostatusvalue").item(i).getTextContent();

if(iostatusvalue.equals("1.0"))
{
on.add(element1.getAttribute("datainterval")));

}


if(iostatusvalue.equals("0.0"))
{

off.add("element1.getAttribute("datainterval"))");

}

}

然后我正在打印我期待的

on = { 2016-01-16 15:45:30" , 2016-05-16 13:01:07 , 2016-05-27 16:45:50,2016-06-10 10:21:28}

off = { 2016-01-16 19:47:29, 2016-05-16 18:51:33, 2016-05-27 20:56:00, 2016-06-10 20:01:17 }

我发现我的列表是空的,上面的 xml 不是完整的 xml,它是 xml 的一部分。

但我没有得到我所期待的东西,我认为我在某个地方犯了逻辑错误,因为我是新手。

感谢您阅读我的问题。

最佳答案

试试这个:

    String xml = "<IOStatusSummary><iostatus_interval_value><count>0</count><iostatusvalue datainterval=\"2016-01-16 15:45:30\">1.0</iostatusvalue><iostatusvalue datainterval=\"2016-01-16 19:47:29\">0.0</iostatusvalue><iostatusvalue datainterval=\"2016-05-16 13:01:07\">1.0</iostatusvalue><iostatusvalue datainterval=\"2016-05-16 18:51:33\">0.0</iostatusvalue><iostatusvalue datainterval=\"2016-05-27 16:45:50\">1.0</iostatusvalue><iostatusvalue datainterval=\"2016-05-27 20:56:00\">0.0</iostatusvalue><iostatusvalue datainterval=\"2016-06-10 10:21:28\">1.0</iostatusvalue><iostatusvalue datainterval=\"2016-06-10 20:01:17\">0.0</iostatusvalue></iostatus_interval_value></IOStatusSummary>";
ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes());
DocumentBuilder db1 = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc1 = db1.parse(bais);

NodeList nList_interval = doc1.getElementsByTagName("iostatus_interval_value").item(0).getChildNodes();

List<String> on = new ArrayList<String>();
List<String> off = new ArrayList<String>();

for (int i = 0; i < nList_interval.getLength(); i++) {
Element element = (Element) nList_interval.item(i);
if (element.getTagName().equals("iostatusvalue")) {
String text = element.getTextContent();
String interval = element.getAttribute("datainterval");
if (text.equals("1.0")) {
on.add(interval);
}
if (text.equals("0.0")) {
off.add(interval);
}
}
}
System.out.println(on);
System.out.println(off);

此示例中的主要区别是这一行:

NodeList nList_interval = doc1.getElementsByTagName("iostatus_interval_value").item(0).getChildNodes();

它的作用是获取第一个 iostatus_interval_value 元素的所有子元素的列表。

关于java - 在java中解析xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38095495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com