public Report getReportByXml(String xmlPath) { File file = new File(xmlPath); FileInputStream fis = null; SAXReader saxReader = new SAXReader(); Document doc = null; Report report = null; try { report = new Report(); fis = new FileInputStream(file); doc = saxReader.read(new InputStreamReader(fis, "UTF-8")); List<Element> listItemNet = doc.selectNodes("/root/net/item"); if(listItemNet !=null && listItemNet.size()>00){ List<Item> listNet = new ArrayList<Item>(); for(Element ele:listItemNet){ Item item = new Item(); item.setHost(ele.valueOf("@host")); item.setPort(ele.valueOf("@port")); listNet.add(item); } report.setListNet(listNet); } List<Element> listItemAutostart = doc.selectNodes("/root/autostart/item"); if(listItemAutostart != null && listItemAutostart.size()>0){ List<Item> listAutostart = new ArrayList<Item>(); for(Element ele:listItemAutostart){ Item item = new Item(); item.setStartpath(ele.valueOf("@startpath")); listAutostart.add(item); } report.setListAutostart(listAutostart); } List<Element> listItemReleasefile = doc.selectNodes("/root/releasefile/item"); if(listItemReleasefile != null && listItemReleasefile.size()>0){ List<Item> listReleasefile = new ArrayList<Item>(); for(Element ele:listItemReleasefile){ Item item = new Item(); item.setName(ele.valueOf("@name")); item.setLength(ele.valueOf("@length")); item.setMd5(ele.valueOf("@md5")); item.setFileproperty(ele.valueOf("@fileproperty")); listReleasefile.add(item); } report.setListReleaaseFile(listReleasefile); } int i = 1; List<Element> listItemBasicaction = doc.selectNodes("/root/basicaction/item"); if(listItemBasicaction != null && listItemBasicaction.size()>0){ List<Item> listBasicaction = new ArrayList<Item>(); for(Element ele:listItemBasicaction){ Item item = new Item(); item.setProcessname(ele.valueOf("@processname")); List<Element> listOperateBasic = doc.selectNodes("/root/basicaction/item["+i+"]/operate"); item.setOperateList(getOperate(listOperateBasic)); listBasicaction.add(item); i++; } report.setListBasicaction(listBasicaction); } int j=1; List<Element> listItemInjectaction = doc.selectNodes("/root/injectaction/item"); if(listItemInjectaction != null && listItemInjectaction.size()>0){ List<Item> listInjectaction = new ArrayList<Item>(); for(Element ele:listItemInjectaction){ Item item = new Item(); item.setProcessname(ele.valueOf("@processname")); List<Element> listOperateInject = doc.selectNodes("/root/injectaction/item["+j+"]/operate"); item.setOperateList(getOperate(listOperateInject)); listInjectaction.add(item); j++; } report.setListInjectaction(listInjectaction); } } catch (DocumentException e) { logger.error(e.getMessage()); } catch (FileNotFoundException e) { logger.error("xml is not exist! : "+xmlPath); } catch (IOException e) { logger.error(e.getMessage()); }finally{ try { if(fis != null){ fis.close(); } } catch (IOException e) { } } return report; }
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <root> <net> <item host="127.0.0.1" port="3306" /> <item host="www.baidu.com" port="8888" /> </net> <autostart> <item startpath="g:/hh.xml"/> <item startpath="c:/file.exe"/> </autostart> <releasefile> <item name="c:\windows\temp\scs1.tmp " length="" md5="" fileproperty="0"/> <item name="c:\windows\temp\scs2.tmp " length="" md5="" fileproperty="0"/> </releasefile> <basicaction> <item processname="c:\windows\system32\drwtsn32.exe"> <operate name="asdft" parameter="目标进程名:c:\windows\system32\ntvdm.exe"/> <operate name="对对对cddad" parameter="测试的文件名:d:\test\helloword.exe"/> </item> <item processname="d:\linux\system64\hyal64.exe"> <operate name="你多或少的线程context" parameter="测试的阿萨德发名:c:\windows\system32\ntvdm.exe"/> <operate name="拉动了房价阿里ddd" parameter="ad发放名:d:\test\helloword.exe"/> </item> </basicaction> <injectaction> <item processname="ninini"> <operate name="haohaohao" parameter="memememe" /> <operate name="aiaiaiaiai" parameter="lzlzlzlzlz" /> </item> <item processname="wowowo"> <operate name="zaizaizai" parameter="canshucashu" /> <operate name="nenenenen" parameter="parparpar" /> </item> </injectaction> </root>
相关推荐
- 性能高效:SAXReader仅读取XML文档的一部分,而不是一次性加载整个文档到内存。 - 内存占用小:适合处理大型XML文件。 缺点: - 需要编写大量的事件处理代码,代码量相对较大。 - 无法方便地进行随机访问,因为它...
在 Java 中读取 XML 文件有多种方法,本文将介绍四种常用的方法:DOM 实现方法、DOM4J 实现方法、JDOM 实现方法和SAX 实现方法。 DOM 实现方法 DOM(Document Object Model)是 W3C 推荐的 XML 文件处理标准。使用...
SAXReader采用事件驱动的方式读取XML文件,这意味着它并不会一次性将整个XML文档加载到内存中,而是逐个节点地读取,这样对于大型XML文件而言,可以有效节省内存资源。 #### 解析XML文件 `Document doc = reader....
在Java编程中,读取XML文件是常见的任务,XML作为一种结构化数据格式,常用于存储和交换数据。这里我们将详细探讨四种不同的Java方法来解析XML文件,以提取所需信息。 第一种方法是使用DOM(Document Object Model...
4. **访问和修改元素**:可以使用`element.getText()`获取元素的文本,`element.attributeValue("attrName")`获取属性值,`element.addElement("newElement")`添加新元素,`element.remove()`删除元素。 5. **保存...
Java中读取XML数据主要有以下几种方式: 1. DOM(Document Object Model)解析: DOM解析器将整个XML文档加载到内存中,形成一棵DOM树。我们可以使用`DocumentBuilder`类来构建这棵树,然后通过遍历节点来访问XML...
此方法首先利用`SAXReader`读取XML文档并将其转换为`Document`对象。接着,通过调用`getRootElement()`获取根元素,再利用`elementIterator()`迭代器遍历子元素。 **示例代码**: ```java import org.dom4j....
本案例主要涉及如何使用DOMJ4库来读取XML文件,同时结合Spring4框架进行操作。DOMJ4是Java中处理XML的一种API,全称为Java DOM API,它允许程序通过内存中的对象模型与XML文档进行交互。 首先,我们需要了解DOM...
1. **读取XML文件**: 使用`SAXReader`对象的`read`方法从输入流中读取XML文件。 2. **解析根节点**: 通过`getRootElement`方法获取XML文件的根元素。 3. **获取节点信息**: 使用`element`方法获取特定名称的子节点,...
在示例中,`xmlHelper.createSAXReader(xmlFile, errors, entityResolver).read(new File(xmlFile))`会使用创建的SAXReader读取指定的XML文件,并将结果存储在一个`Document`对象中。 3. **获取根元素** 一旦XML...
通过本文介绍,我们可以快速掌握使用DOM4J读取XML文件的基本方法,包括读取文件、遍历元素、获取属性值以及利用XPath进行查询。在实际项目中,结合DOM4J的其他高级功能,如修改XML、创建XML等,可以更灵活地处理XML...
Java中读取XML文件的方法有DOM、SAX和StAX三种,每种都有其适用的场景。DOM适用于小到中型的XML文件,因为它将整个文件加载到内存;SAX适用于大型文件,因为它按需读取;而StAX则提供了一种平衡,既不像DOM那样消耗...
通常,这类文章会涵盖如何创建XML文档、添加元素、设置属性、读取XML内容等基本操作。 ** Dom4j简介 ** Dom4j是一个用于处理XML、HTML和DOM的Java库,它提供了丰富的API来处理XML文档,包括解析、构建、遍历和操作...
3. **读取属性**:`Element`对象的`attribute()`和`attributes()`方法可以用来获取元素的属性及其值。 4. **处理文本内容**:`Element`的`getText()`或`getTextContent()`方法用于获取元素的文本内容。 5. **遍历...
2. **创建解析器**:使用`SAXReader`类来创建一个XML解析器,这将帮助我们读取XML文件。 ```java SAXReader reader = new SAXReader(); ``` 3. **读取XML文件**:调用`read()`方法,传入XML文件的路径,加载XML...
综上所述,学习这个知识点需要掌握Dom4j的基本API,理解如何通过它来创建XML结构、设置属性、添加文本,以及如何读取XML文档中的元素、属性和内容。同时,了解XPath查询和使用JUnit进行单元测试也是重要的辅助技能。
通过这个示例代码,读者可以了解Java读取XML文件内容的整个过程,从创建SAXReader对象到遍历元素和获取属性和值。这个示例代码可以作为读者学习和工作的参考,帮助读者更好地掌握Java读取XML文件内容的技术。 需要...
读取XML文件时,我们需要使用DOM4J的`DocumentBuilder`来解析XML文件并生成`Document`对象。之后,可以遍历`Document`的元素树,获取所需的信息。例如: ```java import org.dom4j.Document; import org.dom4j....
要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...
我们可以通过`SAXReader`读取XML文件并创建`Document`对象。 ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; File file = new File(...