0 0

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个答案 按时间排序 按投票排序

0 0

Java自身提供了三种API库去解析XML,比如说DOM、SAXParser、StAXParser三种都可以,需要使用的话在网上有很多示例。需要的话去我的博客看下

2012年6月16日 14:05
0 0

使用者通过调用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
0 0

自己写一个递归解析xml文件的类,使用xPath指向特定的节点以后就会获得相应节点的List集合,然后调用你写的递归程序代码 将节点下的数据放入到map中就可以随意的往数据库中写了。

2012年6月14日 09:24
0 0

还写代码自己解析转成bean?手动解析容易出错,还是交给第三方api去处理吧,第三方的类库很多都比较强悍,比如用xstream,使用它的注解那就更简单了。

2012年6月13日 23:56
0 0

@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
0 0

不用解析可以的。Oracle可以直接用xmlType字段存储xml。
要解析的话,也可用SQL直接获取xml的字段值。
请参考官方文档:http://docs.oracle.com/cd/B10500_01/appdev.920/a96620/xdb04cre.htm
希望对你有帮助。

2012年6月13日 14:54
0 0

不喜欢看这样要求代码的帖子,希望看到是这位哥们能够自己找答案,然后出现问题的帖子,大家都需要自己去发现!

2012年6月13日 10:02
0 0

用jaxb啊。

2012年6月13日 09:40
0 0

用过simple-xml吗? 可以试试,非常简单,易用和强大,
http://www.ibm.com/developerworks/cn/xml/x-simplexobjs/

2012年6月12日 20:56
0 0

哎,这种问题随便搜索下就有答案啦。哥们要善于用搜索引擎啊,给你谷歌了下“xml2bean”,然后第一帖http://www.blogjava.net/vip01/archive/2008/05/21/201822.html

2012年6月12日 20:25
0 0

自己整理下

2012年6月12日 17:55
0 0

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
0 0

  /**
     * 获取节点值
     * @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
0 0

        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
0 1

引用
[flash=200,200][/flash][/size][size=xx-small][/color][color=orange][color=darkblue][/color][align=left][/align]

2012年6月12日 18:12

相关推荐

    java txt文件解析xml格式添加到数据库

    解析完XML后,数据需要插入到数据库中。Java提供了JDBC(Java Database Connectivity)API来与各种数据库进行交互。以下是一个基本的示例,使用PreparedStatement批量插入数据: ```java import java.sql....

    java 解析xml 并导入数据库(dom4j )

    本篇将详细介绍如何使用DOM4J库来解析XML,并将解析得到的数据有效地导入到数据库中。 DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改和处理XML文档。相比于其他的解析器如DOM和SAX...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...

    xml.rar_XML java_java xml_xml_xml 数据库

    这可能使用到了Java的DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)等解析器来构建或读取XML结构。 2. **Java数据库连接(JDBC)**:为了从数据库中获取数据,开发者...

    Java实现XML导入不同数据库,从数据库导出数据到XML

    4. **执行SQL**:通过Connection对象执行SQL语句,将XML中的数据插入或更新到数据库中。 从数据库导出到XML,则是相反的过程: 1. **查询数据库**:编写SQL查询语句从数据库中获取需要的数据。 2. **构建XML**:...

    java解析xml并导入数据库(dom4j).doc

    本文主要讲解如何使用Java和DOM4J库解析XML文件,并将解析得到的数据插入到数据库中。DOM4J是一个非常灵活且功能强大的处理XML、HTML和DOM的Java库,它提供了丰富的API来操作XML文档。 首先,我们需要导入必要的库...

    解析xml和本地解析xml

    常见的本地解析XML的库有Java的DOM和SAX,Python的ElementTree,JavaScript的DOMParser等。 4. CLOB字段与XML数据: CLOB(Character Large Object)是数据库中用于存储大量字符数据的类型,常用于存储XML文档。当...

    java数据库xml驱动

    同时,也可以从XML文件中提取数据,将其插入到数据库中。例如,一个Java应用程序可能首先使用JDBC从数据库获取数据,然后利用DOM4J将这些数据转换成XML格式。相反,当需要将XML数据导入数据库时,可以使用DOM4J解析...

    JSP页面解析XML并且存入数据库

    在获取到这些数据后,下一步是将它们存储到MySQL数据库中。这需要JDBC(Java Database Connectivity)API,通过建立数据库连接、创建Statement或PreparedStatement对象,编写SQL语句来插入数据。例如,假设我们有一...

    Java 解析xml 存入mongodb 返回org.json json包

    本篇将详细介绍如何使用Java解析XML,将数据存入MongoDB,并返回org.json JSON包。 首先,解析XML通常有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档到内存...

    dom4j解析xml,连接oracle数据库

    通过结合DOM4J和Oracle JDBC驱动,我们可以轻松地从XML文件获取数据并将其存储到Oracle数据库中。这个实例展示了如何将这两个技术整合在一起,为XML数据管理和数据库操作提供了一种有效的方法。在实际开发中,可以...

    xml与数据库中数据的导入导出

    4. **XML与数据库的交互**:在导入XML到数据库时,首先需要解析XML文件,然后创建相应的SQL INSERT语句,通过JDBC执行这些语句。导出时,从数据库查询数据,生成XML文档,可以用DOM或StAX来实现。 5. **数据库操作*...

    java读取全国省市xml,并插入数据库

    综上所述,完成“java读取全国省市xml,并插入数据库”这个任务,需要掌握Java XML解析(如SAX)、JDBC数据库操作以及SQL语句设计等关键技术。同时,对数据结构和异常处理的理解也是不可或缺的。通过这些步骤,我们...

    XML基于BS连接数据库的java代码 XML与数据库转换

    反之,从XML到数据库的转换则需要解析XML文件,提取数据,然后插入或更新到数据库中。 例如,使用DOM解析器,我们可以创建一个`DocumentBuilderFactory`实例,然后用`newDocumentBuilder()`方法生成`...

    XML文件创建数据库表

    这些结构化的数据可以映射到数据库中的表和字段,使得XML成为数据库输入的理想选择。 在MySQL中,我们可以使用内置的`LOAD XML`语句来导入XML数据。这个命令允许我们直接从XML文件创建数据库表或者更新已有表的数据...

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...

Global site tag (gtag.js) - Google Analytics