dom解析xml
dom是一种用于XML文档对象模型,可用于直接访问xml文档的各个部分,在DOM中文档模拟为树状,其中xml语法的每一个组成部分都表示一个节点,DOM允许用户遍历文档树,从父节点移动到子节点;操作简单,方便
由于dom是直接将整个xml文件导入进来,所有对内存资源也是一个不小的冲击,所有,DOM只适合那小小型的文档解析,在对大型文档解析的时候要格外注意
以Person的xml文件为例读取:
<persons>
<person id="1">
<name>jackZhous</name>
<age>10</age>
</person>
<person id="2">
<name>Taylor</name>
<age>20</age>
</person>
</persons>
java代码读取:
public void DomXML(String uri) throws Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //获取dom工厂类
DocumentBuilder builder = factory.newDocumentBuilder(); //获取dom解析器
Document document = builder.parse(uri); //使用dom技术将文档转换为 一个document树状对象
Element element = document.getDocumentElement(); //获取文档标签
NodeList personList = element.getElementsByTagName("person"); //以person标签分割为list
//读取每个具体的person内容 并把它加入list
for(int i = 0; i < personList.getLength() ; i++){
Element person = (Element) personList.item(i);
Person p = new Person();
p.setId(Integer.parseInt(person.getAttribute("id")));
NodeList childList = person.getChildNodes();
for(int j = 0; j < childList.getLength() ; j++){
if(childList.item(j).getNodeType() == Node.ELEMENT_NODE){
if("name".equals(childList.item(j).getFirstChild().getNodeName())){
p.setName(childList.item(j).getFirstChild().getNodeValue());
}else if("age".equals(childList.item(j).getFirstChild().getNodeName())){
p.setAge(Integer.parseInt(childList.item(j).getFirstChild().getNodeValue()));
}
list.add(p);
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】