xml文件的读取

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Node;


import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class AcquisitionMap {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{
// TODO 自动生成的方法存根

//1.DocumentBuilderFactory:定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。获取 DocumentBuilderFactory 的新实例:用DocumentBuilderFactory.newInstance()
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2.得到文档解析器:用DocumentBuilder,newDocumentBuilder()使用当前配置的参数创建一个新的 DocumentBuilder 实例。
DocumentBuilder db = dbf.newDocumentBuilder();
//3.指定去解析哪个文件
Document document = db.parse("src/Data.xml");     //xml文件的路径。
//parse(String uri):将给定 URI 的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。


for(int i=0;i<9;i++){
//得到根元素
Element root=document.getDocumentElement();           //获取xml文件根元素
//得到第二个学生节点对象。
Element group=(Element)root.getElementsByTagName("Group").item(i);    //在根元素下根据“Group”获取每一组
String groupnumber=group.getAttribute("Name");                        //根据“Name”获取每一组的属性,即“F15”
System.out.println("是哪一组");
System.out.println(groupnumber);                                      //输出组的名字,如“F15”

Map<String, String> ziMap = new HashMap<String, String>();
Map<String, Map<String, String>> totalMap = new HashMap<String, Map<String, String>>();
totalMap.put(groupnumber, ziMap);

//1.得到根元素班级, Element 是 Node 子类,它的能力比Node 强,
Element e=document.getDocumentElement();
//2.得到Group子节点对象

Element groupname=(Element) e.getElementsByTagName("Group").item(i);//读取第j个Group的属性,0代表选取第1组,即F15。
System.out.println("该组中有什么内容");


Map<String,String> WindMachineOpcItemObject=new HashMap<String,String>();     //新建HashMap,目的是将Group中的Items和DataType分别放到HashMap中的K和Value中。
for(int k=1;k<=404;k++){

String content = groupname.getAttribute("num"+k);      //在Group中获取Items的属性
String OpcItem1=null;                                  //声明字符串content1
String OpcItemDataType1=null;                                  //声明字符串content2
System.out.println("num:"+k + content);                //输出数据项提示文字,如“num:402”
     
OpcItem1 = groupname.getElementsByTagName("Item").item(k-1).getFirstChild().getNodeValue();      //根据Item获取数据项的内容,并赋值给content1
System.out.println("Item:" + OpcItem1);                                                          //输出该组所有的Item
OpcItemDataType1 = groupname.getElementsByTagName("DataType").item(k-1).getFirstChild().getNodeValue();  //根据DataType获取数据项的数据类型,并赋值给content2
System.out.println("DataType:" + OpcItemDataType1);                                                      //输出该组所有的DataType
String WindMachineOpcItem = OpcItem1;
String WindMachineOpcItemDataType = OpcItemDataType1;
WindMachineOpcItemObject.put(WindMachineOpcItem,WindMachineOpcItemDataType);
}

//输出全部的key和value //Map接口中提供了一个叫keySet()的方法,可以将一个Map接口中的全部key变成一个Set集合,一旦有了Set接口实例,就可以使用Iterator接口进行输出。
Set<String> keys=WindMachineOpcItemObject.keySet();          //得到全部的key  
Iterator<String>iter=keys.iterator();     //实例化Itetator
while(iter.hasNext()){                    //迭代输出全部的key
String str =iter.next();              //取出集合的key
String value = WindMachineOpcItemObject.get(str);
System.out.println("Key: "+ str + "       " + "Value: " + value);   //输出内容key、values
}
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值