`

SAXReader读取xml(属性value有值)

    博客分类:
  • XML
 
阅读更多
	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文档

    - 性能高效:SAXReader仅读取XML文档的一部分,而不是一次性加载整个文档到内存。 - 内存占用小:适合处理大型XML文件。 缺点: - 需要编写大量的事件处理代码,代码量相对较大。 - 无法方便地进行随机访问,因为它...

    用java读取xml文件的四种方法.doc

    在 Java 中读取 XML 文件有多种方法,本文将介绍四种常用的方法:DOM 实现方法、DOM4J 实现方法、JDOM 实现方法和SAX 实现方法。 DOM 实现方法 DOM(Document Object Model)是 W3C 推荐的 XML 文件处理标准。使用...

    DOM4J读取XML

    SAXReader采用事件驱动的方式读取XML文件,这意味着它并不会一次性将整个XML文档加载到内存中,而是逐个节点地读取,这样对于大型XML文件而言,可以有效节省内存资源。 #### 解析XML文件 `Document doc = reader....

    java读取xml的四种方法

    在Java编程中,读取XML文件是常见的任务,XML作为一种结构化数据格式,常用于存储和交换数据。这里我们将详细探讨四种不同的Java方法来解析XML文件,以提取所需信息。 第一种方法是使用DOM(Document Object Model...

    java中用dom4j读取xml

    4. **访问和修改元素**:可以使用`element.getText()`获取元素的文本,`element.attributeValue("attrName")`获取属性值,`element.addElement("newElement")`添加新元素,`element.remove()`删除元素。 5. **保存...

    java读取XMl数据

    Java中读取XML数据主要有以下几种方式: 1. DOM(Document Object Model)解析: DOM解析器将整个XML文档加载到内存中,形成一棵DOM树。我们可以使用`DocumentBuilder`类来构建这棵树,然后通过遍历节点来访问XML...

    使用dom4j读取xml四种方法

    此方法首先利用`SAXReader`读取XML文档并将其转换为`Document`对象。接着,通过调用`getRootElement()`获取根元素,再利用`elementIterator()`迭代器遍历子元素。 **示例代码**: ```java import org.dom4j....

    domj4读取xml文件案例

    本案例主要涉及如何使用DOMJ4库来读取XML文件,同时结合Spring4框架进行操作。DOMJ4是Java中处理XML的一种API,全称为Java DOM API,它允许程序通过内存中的对象模型与XML文档进行交互。 首先,我们需要了解DOM...

    详细介绍使用Dom4j读取xml文件的方法

    1. **读取XML文件**: 使用`SAXReader`对象的`read`方法从输入流中读取XML文件。 2. **解析根节点**: 通过`getRootElement`方法获取XML文件的根元素。 3. **获取节点信息**: 使用`element`方法获取特定名称的子节点,...

    Dom4J-SaxReader 的用法

    在示例中,`xmlHelper.createSAXReader(xmlFile, errors, entityResolver).read(new File(xmlFile))`会使用创建的SAXReader读取指定的XML文件,并将结果存储在一个`Document`对象中。 3. **获取根元素** 一旦XML...

    dom4j读取XML简单使用

    通过本文介绍,我们可以快速掌握使用DOM4J读取XML文件的基本方法,包括读取文件、遍历元素、获取属性值以及利用XPath进行查询。在实际项目中,结合DOM4J的其他高级功能,如修改XML、创建XML等,可以更灵活地处理XML...

    java读取XML文件

    Java中读取XML文件的方法有DOM、SAX和StAX三种,每种都有其适用的场景。DOM适用于小到中型的XML文件,因为它将整个文件加载到内存;SAX适用于大型文件,因为它按需读取;而StAX则提供了一种平衡,既不像DOM那样消耗...

    Dom4j写XML和读取XML的工具类,非常好用

    通常,这类文章会涵盖如何创建XML文档、添加元素、设置属性、读取XML内容等基本操作。 ** Dom4j简介 ** Dom4j是一个用于处理XML、HTML和DOM的Java库,它提供了丰富的API来处理XML文档,包括解析、构建、遍历和操作...

    dom4j读取xml

    3. **读取属性**:`Element`对象的`attribute()`和`attributes()`方法可以用来获取元素的属性及其值。 4. **处理文本内容**:`Element`的`getText()`或`getTextContent()`方法用于获取元素的文本内容。 5. **遍历...

    xml数据读取

    2. **创建解析器**:使用`SAXReader`类来创建一个XML解析器,这将帮助我们读取XML文件。 ```java SAXReader reader = new SAXReader(); ``` 3. **读取XML文件**:调用`read()`方法,传入XML文件的路径,加载XML...

    通过Dom4j创建和读取xml文件

    综上所述,学习这个知识点需要掌握Dom4j的基本API,理解如何通过它来创建XML结构、设置属性、添加文本,以及如何读取XML文档中的元素、属性和内容。同时,了解XPath查询和使用JUnit进行单元测试也是重要的辅助技能。

    通过Java读取xml文件内容过程解析

    通过这个示例代码,读者可以了解Java读取XML文件内容的整个过程,从创建SAXReader对象到遍历元素和获取属性和值。这个示例代码可以作为读者学习和工作的参考,帮助读者更好地掌握Java读取XML文件内容的技术。 需要...

    使用dom4j生成和读取hibernate.cfg.xml

    读取XML文件时,我们需要使用DOM4J的`DocumentBuilder`来解析XML文件并生成`Document`对象。之后,可以遍历`Document`的元素树,获取所需的信息。例如: ```java import org.dom4j.Document; import org.dom4j....

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    dom4j解析xml文件代码示例

    我们可以通过`SAXReader`读取XML文件并创建`Document`对象。 ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; File file = new File(...

Global site tag (gtag.js) - Google Analytics