-
java解析复杂xml 插入到数据库中10
这是一个多表的xml数据
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2010 (http://www.altova.com) by fengshuai (founder) -->
<MuxerConfigRoot>
<Mux_Frame>
<MuxFrame_Item>
<MuxFrame_ID>0</MuxFrame_ID>
<Start_Time_Slot>0</Start_Time_Slot>
<Time_Slot_Num>1</Time_Slot_Num>
<RS_Rate>(240,240)</RS_Rate>
<Interleave_Mode>模式1</Interleave_Mode>
<LDPC_Rate>1/2</LDPC_Rate>
<Modulation_Type>BPSK</Modulation_Type>
<Scramble_Type>模式0</Scramble_Type>
</MuxFrame_Item>
<MuxFrame_Item>
<MuxFrame_ID>1</MuxFrame_ID>
<Start_Time_Slot>1</Start_Time_Slot>
<Time_Slot_Num>2</Time_Slot_Num>
<RS_Rate>(240,192)</RS_Rate>
<Interleave_Mode>模式1</Interleave_Mode>
<LDPC_Rate>1/2</LDPC_Rate>
<Modulation_Type>QPSK</Modulation_Type>
<Scramble_Type>模式0</Scramble_Type>
</MuxFrame_Item>
</Mux_Frame>
<Service_Config>
<ESG_Service>
<ESG_Service_Item>
<Service_ID>254</Service_ID>
<MuxFrame_ID>1</MuxFrame_ID>
<Encapsulation_Mode>模式2</Encapsulation_Mode>
<Service_Band>27648</Service_Band>
<IsScramble>false</IsScramble>
</ESG_Service_Item>
</ESG_Service>
<Media_Service>
<Media_Service_Item>
<Service_ID>701</Service_ID>
<MuxFrame_ID>10</MuxFrame_ID>
<Encapsulation_Mode>模式2</Encapsulation_Mode>
<Service_Band>6912</Service_Band>
<IsScramble>false</IsScramble>
<IP>224.12.34.56</IP>
<ECM_Port/>
<Video_Port>0</Video_Port>
<Audio_Port>55072</Audio_Port>
<Audio_CodecType>DRA</Audio_CodecType>
<Sampling_Rate>48</Sampling_Rate>
</Media_Service_Item>
</Media_Service>
</Service_Config>
</MuxerConfigRoot>求代码 解析出来在插入到oracle 数据库中 大佬要有通用的方法,我不会哎,大家帮帮忙写写,我真的没思路了。
2012年6月12日 17:12
15个答案 按时间排序 按投票排序
-
Java自身提供了三种API库去解析XML,比如说DOM、SAXParser、StAXParser三种都可以,需要使用的话在网上有很多示例。需要的话去我的博客看下
2012年6月16日 14:05
-
使用者通过调用Digester类的相关方法,来创建匹配模式与规则的映射序列。
比如,调用addSetProperties(String pattern),向Digester中加入SetPropertiesRule。
基本步骤如下:
1.创建Digester对象实例。
2.设置该Digester对象的配置属性(可选)。
3.将需要的初始对象push到该Digester对象的对象栈上(可选)。
4.需要注册所有的XML元素匹配模式与处理规则之间的映射关系。
5.用digester.parse()解析的XML文档对象,得到目标对象。
--------------------------------------------------------------
你把模板创建好以后,这个调用非常简单而且会把xml直接转换成java对象,而且结构易懂.2012年6月14日 15:00
-
自己写一个递归解析xml文件的类,使用xPath指向特定的节点以后就会获得相应节点的List集合,然后调用你写的递归程序代码 将节点下的数据放入到map中就可以随意的往数据库中写了。
2012年6月14日 09:24
-
还写代码自己解析转成bean?手动解析容易出错,还是交给第三方api去处理吧,第三方的类库很多都比较强悍,比如用xstream,使用它的注解那就更简单了。
2012年6月13日 23:56
-
@SuppressWarnings("unchecked")
public Map<Object,String> xmlElements(String xmlDoc) {
// 创建一个新的字符串
StringReader read = new StringReader(xmlDoc);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
Map<Object,String> map= new HashMap<Object,String>();
try {
// 通过输入源构造一个Document
Document doc = sb.build(source);
// 取的根元素
Element root = doc.getRootElement();
// 取data元素
Element data = root.getChild("data");
if(data == null) return map;
List<Element> list = data.getChildren();
for(Element e : list) {
map.put(e.getName(),e.getTextTrim());
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
jar包我也混在lib里了,楼主自己找找,希望对你有所帮助2012年6月13日 16:18
-
不用解析可以的。Oracle可以直接用xmlType字段存储xml。
要解析的话,也可用SQL直接获取xml的字段值。
请参考官方文档:http://docs.oracle.com/cd/B10500_01/appdev.920/a96620/xdb04cre.htm
希望对你有帮助。2012年6月13日 14:54
-
用过simple-xml吗? 可以试试,非常简单,易用和强大,
http://www.ibm.com/developerworks/cn/xml/x-simplexobjs/2012年6月12日 20:56
-
哎,这种问题随便搜索下就有答案啦。哥们要善于用搜索引擎啊,给你谷歌了下“xml2bean”,然后第一帖http://www.blogjava.net/vip01/archive/2008/05/21/201822.html
2012年6月12日 20:25
-
public static class XmlNode { /** * 节点名 */ private String nodeName; /** * 节点值 */ private String nodeValue; /** * 节点值 */ private String nodeContext; /** * 节点前缀 */ private String nodePrefix; /** * 孩子节点 */ private List<XmlNode> childrens; /** * 同级上一节点 */ private XmlNode preSibling; /** * 同级下一节点 */ private XmlNode nextSibling; private boolean isLeaf = false; private Map<String, Object> attributes;
2012年6月12日 17:54
-
/** * 获取节点值 * @param node * @return XmlNode */ public static XmlNode getNode(Node node) { XmlNode xmlNode = new XmlNode(); if (node.getNodeType() == Node.ELEMENT_NODE) { xmlNode.setNodeName(node.getNodeName()); xmlNode.setNodeValue(node.getNodeValue()); xmlNode.setNodeContext(node.getTextContent()); if (node.hasAttributes()) { xmlNode.setAttributes(getAttributes(node.getAttributes())); } } return xmlNode; } /** * 获取节点属性 * @return */ public static Map<String, Object> getAttributes(NamedNodeMap namedNodeMap) { Map<String, Object> attrs = new HashMap<String, Object>(); int len = namedNodeMap.getLength(); for (int i = 0; i < len; i++) { Node node = namedNodeMap.item(i); attrs.put(node.getNodeName(), node.getNodeValue()); } return attrs; }
2012年6月12日 17:54
-
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder domcumentBuilder = documentBuilderFactory .newDocumentBuilder(); Document domcument = domcumentBuilder.parse(new BufferedInputStream( new FileInputStream(new File("D:/111.xml")))); XmlNode xml = new XmlNode(); xml = node(domcument.getChildNodes().item(0)); public static XmlNode node(Node node) { XmlNode xmlNode = null; if ((Node.ELEMENT_NODE == node.getNodeType())) { //获取节点信息 xmlNode = getNode(node); //创建子节点集合 List<XmlNode> childrens = new ArrayList<XmlNode>(); //获取子节点集合 NodeList notes = node.getChildNodes(); int len = notes.getLength(); //前一节点 XmlNode preNode = null; //遍历子节点 for (int i = 0; i < len; i++) { Node childNode = notes.item(i); if (Node.ELEMENT_NODE == childNode.getNodeType() && childNode.hasChildNodes()) { XmlNode thisNode = node(childNode); //设置节点关系 if (null != preNode) { preNode.setNextSibling(thisNode); } if (null != thisNode) { thisNode.setPreSibling(preNode); } preNode = thisNode; //设置子节点 childrens.add(thisNode); } } if (childrens.size() == 0) { xmlNode.setLeaf(true); } xmlNode.setChildrens(childrens); } return xmlNode; }
2012年6月12日 17:54
-
引用
[flash=200,200][/flash][/size][size=xx-small][/color][color=orange][color=darkblue][/color][align=left][/align]2012年6月12日 18:12
相关推荐
解析完XML后,数据需要插入到数据库中。Java提供了JDBC(Java Database Connectivity)API来与各种数据库进行交互。以下是一个基本的示例,使用PreparedStatement批量插入数据: ```java import java.sql....
本篇将详细介绍如何使用DOM4J库来解析XML,并将解析得到的数据有效地导入到数据库中。 DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改和处理XML文档。相比于其他的解析器如DOM和SAX...
本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...
这可能使用到了Java的DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)等解析器来构建或读取XML结构。 2. **Java数据库连接(JDBC)**:为了从数据库中获取数据,开发者...
4. **执行SQL**:通过Connection对象执行SQL语句,将XML中的数据插入或更新到数据库中。 从数据库导出到XML,则是相反的过程: 1. **查询数据库**:编写SQL查询语句从数据库中获取需要的数据。 2. **构建XML**:...
本文主要讲解如何使用Java和DOM4J库解析XML文件,并将解析得到的数据插入到数据库中。DOM4J是一个非常灵活且功能强大的处理XML、HTML和DOM的Java库,它提供了丰富的API来操作XML文档。 首先,我们需要导入必要的库...
常见的本地解析XML的库有Java的DOM和SAX,Python的ElementTree,JavaScript的DOMParser等。 4. CLOB字段与XML数据: CLOB(Character Large Object)是数据库中用于存储大量字符数据的类型,常用于存储XML文档。当...
同时,也可以从XML文件中提取数据,将其插入到数据库中。例如,一个Java应用程序可能首先使用JDBC从数据库获取数据,然后利用DOM4J将这些数据转换成XML格式。相反,当需要将XML数据导入数据库时,可以使用DOM4J解析...
在获取到这些数据后,下一步是将它们存储到MySQL数据库中。这需要JDBC(Java Database Connectivity)API,通过建立数据库连接、创建Statement或PreparedStatement对象,编写SQL语句来插入数据。例如,假设我们有一...
本篇将详细介绍如何使用Java解析XML,将数据存入MongoDB,并返回org.json JSON包。 首先,解析XML通常有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档到内存...
通过结合DOM4J和Oracle JDBC驱动,我们可以轻松地从XML文件获取数据并将其存储到Oracle数据库中。这个实例展示了如何将这两个技术整合在一起,为XML数据管理和数据库操作提供了一种有效的方法。在实际开发中,可以...
4. **XML与数据库的交互**:在导入XML到数据库时,首先需要解析XML文件,然后创建相应的SQL INSERT语句,通过JDBC执行这些语句。导出时,从数据库查询数据,生成XML文档,可以用DOM或StAX来实现。 5. **数据库操作*...
综上所述,完成“java读取全国省市xml,并插入数据库”这个任务,需要掌握Java XML解析(如SAX)、JDBC数据库操作以及SQL语句设计等关键技术。同时,对数据结构和异常处理的理解也是不可或缺的。通过这些步骤,我们...
反之,从XML到数据库的转换则需要解析XML文件,提取数据,然后插入或更新到数据库中。 例如,使用DOM解析器,我们可以创建一个`DocumentBuilderFactory`实例,然后用`newDocumentBuilder()`方法生成`...
这些结构化的数据可以映射到数据库中的表和字段,使得XML成为数据库输入的理想选择。 在MySQL中,我们可以使用内置的`LOAD XML`语句来导入XML数据。这个命令允许我们直接从XML文件创建数据库表或者更新已有表的数据...
在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...