`
huqingyong_eye
  • 浏览: 37761 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

XML解析

阅读更多
package com.nci.nportal.webservice.allinterface.cisinterface;

import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.jdom.input.SAXBuilder;

import com.nci.nportal.webservice.Encode;
import com.nci.nportal.webservice.allinterface.OutInformationService;

/**
 * 类说明:
 */
public class XmlUtils {
	/**
	 * <?xml version="1.0" encoding="UTF-8"?>
	 *<invoke type="invoke.createPlan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="invoke.xsd" sendoraccept="accept" whichservice="outinformation'>
	 *<return type="return" />
	 *<parameters>
	 *	<object name="data'>
	 *	<property name="title">承德市烟草专卖局关于XX同志上班期间玩游戏的处罚决定</property>"
	 *	</object>
	 *</parameters>
	 *</invoke>
	 */
	private Node selectSingleNode(Document document, String path){
		List list = document.selectNodes(path);
		if(list!=null && list.size()>0){
			for(int i=0;i<list.size();i++){
				Object obj = list.get(i);
				if(obj!=null && obj instanceof Node){
					return (Node)obj;
				}
			}
		}
		return null;
		
	}
	
	/**
	 * <?xml version="1.0" encoding="UTF-8"?>
	 *<invoke type="invoke.createPlan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="invoke.xsd" sendoraccept="accept" whichservice="outinformation'>
	 *<return type="return" />
	 *<parameters>
	 *	<object name="data'>
		 *	<property name="formlist'>
		 *		<list>
		 *			<property name=" projectids '>1,2,3</property>
		 *			<property name=" projecttypes '>a,b,c</property>
		 *			<property name=" contents '><![CDATA[这是内容]]></property>
		 *		</list>
		 *	</property>
	 *	</object>
	 *</parameters>
	 *</invoke>
	 */
	private ArrayList getListAttributeValue(Document document,String listType,String attribute){
		ArrayList attributevalue = new ArrayList();
		Element root = document.getRootElement();
		Element parameters = (Element)root.elements().get(1); //<parameters>
		Element object = (Element)parameters.elements().get(0); 
		List property = object.elements(); 
		for (int i = 0; i<property.size();i++) {
			Element e = (Element) property.get(i);
			Attribute attr = (Attribute) e.attributeIterator().next();
			if(attr.getText().equals(listType)){
				Element fl = (Element)e.elements().get(e.elements().size()-1);
				List formlist = fl.elements();
				for(int j =0;j<formlist.size();j++){
					Element ee= (Element)formlist.get(j);
					Attribute attr2 = (Attribute)ee.attributeIterator().next();
					if(attr2.getText().equals(attribute)){
						ee.asXML();
						attributevalue.add(ee.getText());
					}
				}
				break;
			}
		}
		return attributevalue;
	}
	
	/**
	 * <property name="attachlist'>
*			<list>
*				<object name="attachment'>
*					<!--附件名称-->
*					<property name="attachname'>劳动法.doc</property>
*					<!--附件地址-->
*					<property name="attachurl'>http://172.0.0.1/nportal/files/test.doc</property>
	*				<!--附件内容-->
	*				<property name="attachcontent'> MjAwOMTqwM22r7eouea2qMjnz8Kjug0KyKvE6rzZxtoxMczso7oNCsflw/ehotbQx+8= 8Kjug0KyKvE6rzZxtoxMczso7oNCsflw/ehotb </property>
	*			</object>
	*			<object name=" attachment'>
	*				<!--附件名称-->
	*				<property name="attachname'>附件.jar</property>
	*				<!--附件地址-->
	*				<property name="attachurl'>http://172.0.0.1/nportal/files/test.doc</property>
	*				<!--附件内容-->
	*				<property name="attachcontent'> MjAwOMTqwM22r7eouea2qMjnz8Kjug0KyKvE6rzZxtoxMczso7oNCsflw/ehotbQx+8= 8Kjug0KyKvE6rzZxtoxMczso7oNCsflw/ehotb </property>
	*			</object>
	*		</list>
	*	</property>
	 */
	private ArrayList getMoreListAttributeValue(Document document,String listType,String objname,String attribute){
		ArrayList attributevalue = new ArrayList();
		Element root = document.getRootElement();
		Element parameters = (Element)root.elements().get(1); //<parameters>
		Element object = (Element)parameters.elements().get(0); 
		List property = object.elements(); 
		for (int i = 0; i<property.size();i++) {
			Element e = (Element) property.get(i);
			Attribute attr = (Attribute) e.attributeIterator().next();
			//<property name='picturelist'>
			if(attr.getText().equals(listType)){
				//<list>
				Element list = (Element) e.elements().get(0);
				//<object name="picture'>
				List obj = list.elements();
				for (int j =0;j<obj.size(); j++) {
					Element obj2 = (Element) obj.get(j);
					Attribute attr2 = (Attribute) obj2.attributeIterator().next();
					if(attr2.getText().equals(objname)){
						List obj3 = obj2.elements();
						for (int k =0;k<obj3.size(); k++) {
							Element property_sec= (Element)obj3.get(k);
							Attribute provalue = (Attribute)property_sec.attributeIterator().next();
							if(provalue.getText().equals(attribute)){
								attributevalue.add(property_sec.getText());
							}
						}
					}
				}
				break;
			}
		}
		return attributevalue;
	}
	
	public static void main(String[] args){
		OutInformationService a = new OutInformationService();
		SAXBuilder   bld=new   SAXBuilder(); 
		String invokeDoc = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
	+ " <invoke type=\"invoke.createPlan\""
	+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
	+ " xsi:noNamespaceSchemaLocation=\"invoke.xsd\" sendoraccept=\"accept\""
	+ " whichservice=\"outinformation\">"
	+ "        <return type=\"return\"/>"
	+ "        <parameters>"
	+ "                <object name=\"data\">"
	+ "                        <property name=\"title\">承德市烟草专卖局关于XX同志上"
	+ "班期间玩游戏的处罚决定</property>"
	+ "                        <property name=\"formlist\">"
	+ "                        <list>"
	+ "                                <property name=\"projectids\"></property>"
	+ "                                <property name=\"contents\"><![CDATA[PGEgaHJlZj0naHR0cDovLzE5Mi4xNjguMTMzLjE2Njo4MDg4L2l"
	+ "vYS9kby9pb2EvaW9hY2Rvd25sb2FkP2NpZD1jaGVuZ2Rlb2EmcmVxdWVzdHR5cGU9cHViZmlsZSZ"
	+ "maWxldHlwZT1zZW5kZmlsZSZndWlkPUVCMjM2MDFELUE3MTItQzJEMi0yNTU5LUEwQ0FEMEI2OTA"
	+ "4Qyc+o6jV/c7Eo6mz0LXCytDRzLLd16jC9L7WudjT2lhYzazWvsnPsODG2rzkzebTzs+3tcS"
	+ "4Qyc+0pre"
	+ "jvva2qDwvYT48YnI+]]></property>"
	+ "                        </list>"
	+ "                        </property>"
	+ "                        <property"
	+ " name=\"columnid\">0A5A9FF45262C2ACFA1E3FED2A66DFF6</property>"
	+ ""
	+ "                        <property name=\"publishdept\">cdyc</property>"
	+ "                        <property name=\"publisher\">超级用户</property>"
	+ "                        <property name=\"publisherid\">admin</property>"
	+ "                        <property name=\"disorder\">100</property>"
	+ "                        <property name=\"users\"></property>"
	+ "                        <property name=\"roles\"></property>"
	+ "                        <property"
	+ " name=\"cmscode\">EB23601D-A712-C2D2-2559-A0CAD0B6908C</property>"
	+ "                </object>"
	+ "        </parameters>"
	+ "</invoke>";
		SAXReader reader = new SAXReader();
		String xmlstr = Encode.stripNonValidXMLCharacters1(Encode.stripNonValidXMLCharacters(Encode.filterXmlData(invokeDoc)));
		Document document;
		try {
			document = reader.read(new ByteArrayInputStream(xmlstr.getBytes("UTF-8")));
			a.acceptInfo(document);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}
	public String testacceptInfo(String invokeDoc) {
		String returnValue = "";
		try {
			SAXReader reader = new SAXReader();
			String xmlstr = Encode
					.stripNonValidXMLCharacters1(Encode
							.stripNonValidXMLCharacters(Encode
									.filterXmlData(invokeDoc)));
			Document document = reader.read(new ByteArrayInputStream(xmlstr
					.getBytes("UTF-8")));
			document.toString();
			Element root = document.getRootElement();
			String title = selectSingleNode(document, "/invoke/parameters/object/property[normalize-space(@name)='title']").getText();//document.selectSingleNode("/invoke/parameters/object/property[normalize-space(@name)='meetingName']").getText();
			ArrayList projectids = getListAttributeValue(document,"formlist","projectids");
			ArrayList pictureurl = getMoreListAttributeValue(document,"picturelist","picture","pictureurl");
			String sendoraccept = root.attribute("sendoraccept").getText();

//			returnValue = doaccept(sendoraccept, document);
		} catch (UnsupportedEncodingException docEx) {
			docEx.printStackTrace();
			returnValue = "";
		} catch (DocumentException docEx) {
			docEx.printStackTrace();
			returnValue = "";
		}
		return returnValue;
	}

}



分享到:
评论

相关推荐

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    C# XML解析方式

    根据给定文件中的标题、描述、标签以及部分内容,可以总结并深入探讨以下关于C#中XML解析的关键知识点: ### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`...

    XML解析器示例

    在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这个强大的图形化编程环境中,XML解析器是处理和操作XML数据的关键工具。本示例主要展示了如何在LabVIEW中实现XML文件的加载、保存和解析。 首先...

    xml解析文件的两种方式

    本文将详细介绍XML解析文件的两种主要方式:SAX(Simple API for XML)和DOM(Document Object Model)。 **1. DOM解析** DOM解析方式是将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个树的每个...

    XML解析和生成工具

    本文将深入探讨XML解析和生成工具的相关知识,以及如何利用提供的`Markup.cpp`和`Markup.h`文件进行操作。 XML的结构: XML文档由一系列元素构成,每个元素都有一个开始标签和结束标签,如 `&lt;tag&gt;` 和 `&lt;/tag&gt;`。...

    XML解析 很全 一看就懂的东东

    在Java中,XML解析有四种主要的方法:DOM、SAX、JDOM和DOM4J。 1. DOM(文档对象模型)是W3C推荐的标准,它将XML文档转换为一棵树形结构,允许开发者通过节点遍历和操作XML内容。DOM的优势在于它提供了一种灵活的...

    ios 简单xml解析DEMO绝对可用

    本教程将介绍如何在iOS应用中实现简单的XML解析,并提供了一个名为"UITableViewTricks"的DEMO,供开发者们参考学习。 XML文件结构清晰,易于理解,但在iOS中解析XML数据并非内置功能,需要借助第三方库或者Apple...

    MusicXML 解析与布局

    MusicXML是一种开放标准的音乐符号交换格式,它允许数字音乐...总之,"MusicXML解析与布局"项目涵盖了XML解析、数据结构设计、图形渲染、音乐理论等多个方面的知识,对于深入理解音乐和计算机科学的结合具有重要意义。

    XML解析工具

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...

    适合嵌入式系统的开源XML解析器

    在嵌入式系统中,由于资源限制,往往需要轻量级且高效的XML解析器。"minixml"就是这样一个专为嵌入式系统设计的开源XML解析器,它提供DOM(Document Object Model)支持,使得开发者能够方便地处理XML文档。 mini...

    java心电图xml解析.zip

    Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....

    XML解析支持库

    XML解析支持库则是用于处理XML文档的核心工具,它们帮助开发者有效地读取、解析、创建和操作XML数据。 在Java开发中,常见的XML解析库有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming...

    xml解析器,xml解析代码例子

    本文将深入探讨XML解析器的工作原理,并通过具体的代码示例帮助你理解和掌握XML解析的基本方法。 XML文档结构由元素、属性、文本内容、注释等构成。元素是XML文档的核心,它们用尖括号包围,如 `&lt;element&gt;`。属性...

    XML解析支持库2.0#0版

    易语言EXMLParser.fne支持库中文名为易语言XML解析支持库,本易语言支持库提供对W3C标准XML文件的读写支持。目前本易语言支持库仅支持W3C标准的XML文件,不支持DTD。支持BASE64编码文本和CDATA文本,编码方面仅支持...

    libxml2-2.9.8.rar_C语言解析XML_ITW_c语言XML解析器_joined4mf_windows 8

    《C语言实现的libxml2-2.9.8 XML解析器详解》 XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置文件存储等领域。在IT行业中,C语言由于其高效、灵活的特点,常被用来编写...

    XML解析技术研究XML解析技术研究

    XML解析技术是XML应用的核心,它涉及将XML文档转换为可处理的结构化数据。XML,全称为eXtensible Markup Language,是一种元语言,用于描述结构化数据,独立于编程语言、操作系统和传输协议。W3C联盟自1996年开始...

    XML解析器,用于解析XML文件

    理解和熟练使用XML解析器是任何IT专业人士的必备技能之一,无论是在移动应用、Web服务还是桌面应用程序中,XML解析都发挥着关键作用。了解和掌握TinyXML这样的解析库,可以帮助开发者更高效地处理XML数据。

    XML解析器下载JAR包

    XML解析器是处理XML文档的核心组件,它能够读取XML文件并将其内容转换为程序可以理解的形式。在Java环境中,XML解析器通常以JAR(Java Archive)文件的形式提供,方便开发者集成到项目中。 "XML解析器下载JAR包"这...

    java XML解析方式实现自动生成word文档

    XML解析方式是一种高效且灵活的方法,能够帮助我们实现这一目标。本篇文章将详细探讨如何利用Java和XML解析来自动化创建Word文档。 首先,我们需要了解XML的结构。XML(Extensible Markup Language)是一种标记语言...

Global site tag (gtag.js) - Google Analytics