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作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...
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解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`...
在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这个强大的图形化编程环境中,XML解析器是处理和操作XML数据的关键工具。本示例主要展示了如何在LabVIEW中实现XML文件的加载、保存和解析。 首先...
本文将详细介绍XML解析文件的两种主要方式:SAX(Simple API for XML)和DOM(Document Object Model)。 **1. DOM解析** DOM解析方式是将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个树的每个...
本文将深入探讨XML解析和生成工具的相关知识,以及如何利用提供的`Markup.cpp`和`Markup.h`文件进行操作。 XML的结构: XML文档由一系列元素构成,每个元素都有一个开始标签和结束标签,如 `<tag>` 和 `</tag>`。...
在Java中,XML解析有四种主要的方法:DOM、SAX、JDOM和DOM4J。 1. DOM(文档对象模型)是W3C推荐的标准,它将XML文档转换为一棵树形结构,允许开发者通过节点遍历和操作XML内容。DOM的优势在于它提供了一种灵活的...
本教程将介绍如何在iOS应用中实现简单的XML解析,并提供了一个名为"UITableViewTricks"的DEMO,供开发者们参考学习。 XML文件结构清晰,易于理解,但在iOS中解析XML数据并非内置功能,需要借助第三方库或者Apple...
MusicXML是一种开放标准的音乐符号交换格式,它允许数字音乐...总之,"MusicXML解析与布局"项目涵盖了XML解析、数据结构设计、图形渲染、音乐理论等多个方面的知识,对于深入理解音乐和计算机科学的结合具有重要意义。
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
在嵌入式系统中,由于资源限制,往往需要轻量级且高效的XML解析器。"minixml"就是这样一个专为嵌入式系统设计的开源XML解析器,它提供DOM(Document Object Model)支持,使得开发者能够方便地处理XML文档。 mini...
Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....
XML解析支持库则是用于处理XML文档的核心工具,它们帮助开发者有效地读取、解析、创建和操作XML数据。 在Java开发中,常见的XML解析库有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming...
本文将深入探讨XML解析器的工作原理,并通过具体的代码示例帮助你理解和掌握XML解析的基本方法。 XML文档结构由元素、属性、文本内容、注释等构成。元素是XML文档的核心,它们用尖括号包围,如 `<element>`。属性...
易语言EXMLParser.fne支持库中文名为易语言XML解析支持库,本易语言支持库提供对W3C标准XML文件的读写支持。目前本易语言支持库仅支持W3C标准的XML文件,不支持DTD。支持BASE64编码文本和CDATA文本,编码方面仅支持...
《C语言实现的libxml2-2.9.8 XML解析器详解》 XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置文件存储等领域。在IT行业中,C语言由于其高效、灵活的特点,常被用来编写...
XML解析技术是XML应用的核心,它涉及将XML文档转换为可处理的结构化数据。XML,全称为eXtensible Markup Language,是一种元语言,用于描述结构化数据,独立于编程语言、操作系统和传输协议。W3C联盟自1996年开始...
理解和熟练使用XML解析器是任何IT专业人士的必备技能之一,无论是在移动应用、Web服务还是桌面应用程序中,XML解析都发挥着关键作用。了解和掌握TinyXML这样的解析库,可以帮助开发者更高效地处理XML数据。
XML解析器是处理XML文档的核心组件,它能够读取XML文件并将其内容转换为程序可以理解的形式。在Java环境中,XML解析器通常以JAR(Java Archive)文件的形式提供,方便开发者集成到项目中。 "XML解析器下载JAR包"这...
XML解析方式是一种高效且灵活的方法,能够帮助我们实现这一目标。本篇文章将详细探讨如何利用Java和XML解析来自动化创建Word文档。 首先,我们需要了解XML的结构。XML(Extensible Markup Language)是一种标记语言...