文档章节

Java--解析xml文档

求是科技
 求是科技
发布于 2017/03/14 19:17
字数 483
阅读 22
收藏 0

需要解析的文档如下

<?xml version="1.0"?>
<UnifiedContentDefine>
	<Head>
		<TaskGUID>c7104f47651045519917160355313d77</TaskGUID>
	</Head>
	<ContentInfo>
		<ContentID>c7104f47651045519917160355313d77</ContentID>
		<ContentData>
			<ContentFile>
				<FileItem>
					<FileTypeID>FILETYPE_HIGHMP4(写死)</FileTypeID>
					<FileName>
						<FullPath>a3_2016-11-3016_38_32.avi(素材名称,xml文件和素材在同一目录)</FullPath>
					</FileName>
				</FileItem>
			</ContentFile>
			<EntityData>
				<AttributeItem>
					<ItemCode>ClipName</ItemCode>
					<ItemName>素材名称</ItemName>
					<Value>a3</Value>
				</AttributeItem>
				<AttributeItem>
					<ItemCode>CreatorID</ItemCode>
					<ItemName>创建人ID</ItemName>
					<Value>0</Value>
				</AttributeItem>
				<AttributeItem>
					<ItemCode>CreatorName</ItemCode>
					<ItemName>创建人Name</ItemName>
					<Value>li</Value>
				</AttributeItem>
				<AttributeItem>
					<ItemCode>CreatorCode</ItemCode>
					<ItemName>创建人编码</ItemName>
					<Value>c7104f47651045519917160355313d77</Value>
				</AttributeItem>
				<AttributeItem>
					<ItemCode>CreateDate</ItemCode>
					<ItemName>创建时间</ItemName>
					<Value>42704.693426</Value>
				</AttributeItem>
				<AttributeItem>
					<ItemCode>ColumnName</ItemCode>
					<ItemName>栏目名称</ItemName>
					<Value>测试栏目</Value>
				</AttributeItem>
				<AttributeItem>
					<ItemCode>ColumnCode</ItemCode>
					<ItemName>栏目编码</ItemName>
					<Value>738197505</Value>
				</AttributeItem>
			</EntityData>
		</ContentData>
	</ContentInfo>
</UnifiedContentDefine>

代码如下

            //1.解析xml,abfilePath是xml文件的完整路径,实际上是去读取该文件中的内容,保存为字符串
            String content = FileUtil.readText(abfilePath);
            if(StringUtil.isEmpty(content)){
                LogUtil.info("读取文件内容为空!");
                return;
            }
            //将文件内容转换为xml对象
            Document document = DocumentHelper.parseText(content);
            //获取根元素
            Element root = document.getRootElement();
            //Head
            Element head = root.element("Head");
            //TaskGUID
            Element taskGUID = head.element("TaskGUID");
            //取TaskGUID值
            String taskGUIDValue = taskGUID.getStringValue();

            //ContentInfo
            Element contentInfo = root.element("ContentInfo");
            //ContentID
            Element contentID = contentInfo.element("ContentID");
            //取ContentID值
            String contentIDValue = contentID.getStringValue();
            //ContentData
            Element contentData = contentInfo.element("ContentData");
            //ContentFile
            Element contentFile = contentData.element("ContentFile");
            //FileItem
            Element fileItem = contentFile.element("FileItem");
            //FileTypeID
            Element fileTypeID = fileItem.element("FileTypeID");
            //取FileTypeID值
            String fileTypeIDValue = fileTypeID.getStringValue();
            //FileName
            Element fileName = fileItem.element("FileName");
            //FullPath
            Element fullPath = fileName.element("FullPath");
            //取FullPath值
            String fullPathValue = fullPath.getStringValue();
            //EntityData
            Element entityData = contentData.element("EntityData");
            //AttributeItem
            List nodeList = entityData.selectNodes("AttributeItem");
            //ListObject
            List<JSONObject> jsonObjectList = new ArrayList<>();
            for (int i=0;i< nodeList.size();i++){
                Node mediaFile = (Node) nodeList.get(i);
                String itemCode = mediaFile.selectSingleNode("ItemCode").getText();
                String itemName = mediaFile.selectSingleNode("ItemName").getText();
                String value = mediaFile.selectSingleNode("Value").getText();
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("itemCode",itemCode);
                jsonObject.put("itemName",itemName);
                jsonObject.put("value",value);
                //装入list
                jsonObjectList.add(jsonObject);
            }
            //保存解析的数据
            JSONObject objectIn = new JSONObject();
            objectIn.put("taskGUIDValue",taskGUIDValue);
            objectIn.put("contentIDValue",contentIDValue);
            objectIn.put("fileTypeIDValue",fileTypeIDValue);
            objectIn.put("fullPathValue",fullPathValue);
            objectIn.put("jsonObjectList",jsonObjectList);

FileUtil.java

public class FileUtil {

	public static String normalizePath(String path) {
		path = path.replace('\\', '/');
		path = StringUtil.replaceEx(path, "../", "/");
		path = StringUtil.replaceEx(path, "./", "/");
		if (path.endsWith("..")) {
			path = path.substring(0, path.length() - 2);
		}
		path = path.replaceAll("/+", "/");
		return path;
	}
	public static String readText(String fileName) {
		fileName = normalizePath(fileName);
		return readText(fileName, Constant.GlobalCharset);
	}
	public static String readText(String fileName, String encoding) {
		fileName = normalizePath(fileName);
		try {
			InputStream is = new FileInputStream(fileName);
			String str = readText(is, encoding);
			is.close();
			return str;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

© 著作权归作者所有

求是科技

求是科技

粉丝 100
博文 455
码字总数 238876
作品 0
成都
后端工程师
私信 提问
【XML系列】详解JDOM解析XML

【XML系列】详解JDOM解析XML 一、前言 JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。...

磊神Ray
2011/11/01
200
0
XML解析(DOM、SAX、JDOM和DOM4J)

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SA...

拷贝忍者卡卡习
2017/01/18
31
0
java解析xml的四种方法汇总

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SA...

LYQ1990
2017/10/26
36
0
详解Java解析XML的四种方法

XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关...

hchen1982
2011/08/08
230
0
Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .

jdom解析 JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实...

长平狐
2012/11/12
207
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部