`

java通过org.w3c.dom解析xml文件

    博客分类:
  • xml
阅读更多

要点:

 

        // 属性值获取  String Element.getAttribute(name);
        //标签值通过父元素对象获取  NodeList  parentElement.getElementsByTagName(name);
        //标签中间的值获取  String Element.getTextContent()

 

    private void loadSdataConfig() throws RuntimeException {
        // 属性值获取  String Element.getAttribute(name);
        //标签值通过父元素对象获取  NodeList  parentElement.getElementsByTagName(name);
        //标签中间的值获取  String Element.getTextContent()
        try {
            String sdataPath = SdataConfig.class.getResource("/sdata.xml").toURI().getPath();
            if (sdataPath == null) {
                throw new RuntimeException("sdata.xml path is null");
            }

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = null;
            Document document = null;
            try {
                builder = factory.newDocumentBuilder();
                document = builder.parse(sdataPath);
            } catch (Exception e) {
                e.printStackTrace();
            }

            Element element = document.getDocumentElement();

            NodeList sdataPortList = element.getElementsByTagName("sdata-port");
            if (sdataPortList != null && sdataPortList.getLength() > 0) {
                sdataPort = Integer.parseInt(sdataPortList.item(0).getTextContent());
            }
            NodeList dataBrowserPortList = element.getElementsByTagName("data-browser-port");
            if (dataBrowserPortList != null && dataBrowserPortList.getLength() > 0) {
                dataBrowserPort = Integer.parseInt(dataBrowserPortList.item(0).getTextContent());
            }
            NodeList commandPortList = element.getElementsByTagName("command-port");
            if (commandPortList != null && commandPortList.getLength() > 0) {
                commandPort = Integer.parseInt(commandPortList.item(0).getTextContent());
            }
            LOG.info("sdata-port:{} , data-browser-port:{} , command-port:{} ", sdataPort, dataBrowserPort, commandPort);

            NodeList marketInitJobsList = element.getElementsByTagName("marketInitPushJobs");
            if (marketInitJobsList != null && marketInitJobsList.getLength() > 0) {
                Element marketInitPushJob = (Element) marketInitJobsList.item(0);
                NodeList marketInitPushJobList = marketInitPushJob.getElementsByTagName("marketInitPushJob");
                for (int i = 0; i < marketInitPushJobList.getLength(); i++) {
                    Element ele = (Element) marketInitPushJobList.item(i);
                    Job job = new Job();
                    String name = ele.getAttribute("name");
                    job.setName(name);
                    String cron = ele.getAttribute("cron");
                    if (cron != null && cron.trim().length() > 0) {
                        job.setCrons(Arrays.asList(cron.split(";")));
                    }
                    String clazz = ele.getAttribute("class");
                    job.setJobClass(clazz);
                    marketInitPushJobs.add(job);
                }
            }
            LOG.info("marketInitPushJobs msgs:{}", marketInitPushJobs);

            NodeList verdatasList = element.getElementsByTagName("verdatas");
            if (verdatasList != null && verdatasList.getLength() > 0) {
                Element verdatasElement = (Element) verdatasList.item(0);
                NodeList verdataList = verdatasElement.getElementsByTagName("verdata");
                if (verdataList != null && verdataList.getLength() > 0) {
                    for (int i = 0; i < verdataList.getLength(); i++) {
                        Element verdataElement = (Element) verdataList.item(i);
                        Verdata verdata = new Verdata();
                        String verdataName = verdataElement.getAttribute("name");
                        verdata.setName(verdataName);
                        String adapt = verdataElement.getAttribute("isAdapt");
                        if (adapt != null && adapt.trim().length() > 0) {
                            verdata.setAdapt(Boolean.parseBoolean(adapt));
                        }
                        NodeList processorList = verdataElement.getElementsByTagName("processor");
                        if (processorList != null && processorList.getLength() > 0) {
                            for (int j = 0; j < processorList.getLength(); j++) {
                                Element processorElement = (Element) processorList.item(j);
                                Processor processor = new Processor();
                                processor.setId(processorElement.getAttribute("id"));
                                processor.setName(processorElement.getAttribute("name"));
                                processor.setDataId(Integer.parseInt(processorElement.getAttribute("dataId")));
                                processor.setCodecClass(processorElement.getAttribute("codecClass"));
                                processor.setFactoryClass(processorElement.getAttribute("factoryClass"));
                                String isInit = processorElement.getAttribute("isInit");
                                if (isInit != null && isInit.trim().length() > 0) {
                                    processor.setInit(Boolean.parseBoolean(isInit));
                                }
                                List<Processor> processors = verdata.getProcessors();
                                if (processors == null) {
                                    processors = new ArrayList<>();
                                    verdata.setProcessors(processors);
                                }
                                processors.add(processor);
                            }
                        }
                        verdatas.add(verdata);
                    }
                }
            }
            LOG.info("verdatas msg:{}", verdatas);

            NodeList jobsList = element.getElementsByTagName("jobs");
            if (jobsList != null && jobsList.getLength() > 0) {
                Element jobsElement = (Element) jobsList.item(0);
                NodeList jobList = jobsElement.getElementsByTagName("job");
                if (jobList != null && jobList.getLength() > 0) {
                    for (int i = 0; i < jobList.getLength(); i++) {
                        Element jobElement = (Element) jobList.item(i);
                        Job job = new Job();
                        job.setName(jobElement.getAttribute("name"));
                        String cron = jobElement.getAttribute("cron");
                        if (cron != null && cron.trim().length() > 0) {
                            job.setCrons(Arrays.asList(cron.split(";")));
                        }
                        job.setJobClass(jobElement.getAttribute("jobClass"));
                        jobs.add(job);
                    }
                }
            }
            LOG.info("jobs msg: {}", jobs);


        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

 

sdata.xml文件

 

 

<?xml version="1.0" encoding='UTF-8'?>
<sdata-config>
    <sdata-port desc="">1204</sdata-port>
    <data-browser-port desc="">1205</data-browser-port>
    <command-port desc="">1206</command-port>

    <marketInitPushJobs>
        <marketInitPushJob name="SHSZ" cron="0 52,55 8 * * ?;0 1,15,30 9 * * ?"
                           class="com.eastmoney.sdata.job.MarketInitPushJob" desc="沪深市场早盘推数据Job"/>
        <marketInitPushJob name="StaticBlock" cron="0 0 1 * * ?"
                           class="com.eastmoney.sdata.db.staticblock.StaticBlockSecurityIdJob" desc="静态指数内码集合Job"/>
    </marketInitPushJobs>

    <!-- -->
    <verdatas>

        <verdata name="shszfactor" isAdapt="true">
            <processor id="shszfactor-10229" name="shszfactor" dataId="10229"   factoryClass="com.eastmoney.sdata.verdata.impl.factor.SHSZFactorFactory" codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
            <processor id="shszfactor-10129" name="shszfactor" dataId="10129" isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.factor.SHSZFactorFactory" codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
        </verdata>

        <verdata name="hkfactor" isAdapt="true">
            <processor id="hkfactor-10232" name="hkfactor" dataId="10232"   factoryClass="com.eastmoney.sdata.verdata.impl.factor.HKFactorFactory" codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
            <processor id="hkfactor-10132" name="hkfactor" dataId="10132"  isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.factor.HKFactorFactory" codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
        </verdata>

        <verdata name="ussfactor" isAdapt="true">
            <processor id="ussfactor-10233" name="ussfactor" dataId="10233" isInit="false" factoryClass="com.eastmoney.sdata.verdata.impl.factor.USSFactorFactory"
                       codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
            <processor id="ussfactor-10133" name="ussfactor" dataId="10133" isInit="false" factoryClass="com.eastmoney.sdata.verdata.impl.factor.USSFactorFactory"
                       codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
        </verdata>


        <verdata name="sanbanfactor" isAdapt="true">
            <processor id="sanbanfactor-10234" name="" dataId="10234" isInit="false" factoryClass="com.eastmoney.sdata.verdata.impl.factor.SanbanFactorFactory"
                       codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
            <processor id="sanbanfactor-10134" name="" dataId="10134" isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.factor.SanbanFactorFactory"
                       codecClass="com.eastmoney.sdata.verdata.impl.factor.FactorEncode" desc=""/>
        </verdata>

        <verdata name="finance" isAdapt="false">
            <processor id="finance-10030" name="finance" dataId="10030" isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.finance.FinanceFacotry"
                       codecClass="com.eastmoney.sdata.verdata.impl.finance.FinanceEncode" desc=""/>
        </verdata>


        <verdata name="price" isAdapt="false">
            <processor id="price-10031" name="price" dataId="10031" isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.price.PriceFactory" codecClass="com.eastmoney.sdata.verdata.impl.price.PriceEncode" desc=""/>
        </verdata>


        <verdata name="date" isAdapt="false">
            <processor id="date-10035" name="date"  dataId="10035" isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.date.DateFactory" codecClass="com.eastmoney.sdata.verdata.impl.date.DateEncode" desc=""/>
        </verdata>

        <verdata name="optionbond" isAdapt="false">
            <processor id="optionbond-10040" name="optionbond"  dataId="10040" isInit="true" factoryClass="com.eastmoney.sdata.verdata.impl.optionbond.OptionBondDataFactory" codecClass="com.eastmoney.sdata.verdata.impl.optionbond.OptionBondEncode" desc=""/>
        </verdata>




        <jobs>
            <job name="SHSZFQCalJob" cron="0 0 7 * * ?" jobClass="com.eastmoney.sdata.verdata.job.SHSZFQCalJob" desc=""/>
            <job name="SHSZSanbanFactorUpdateJob" cron="0 50 8 * * ?;0 05,30 9 * * ?" jobClass="com.eastmoney.sdata.verdata.job.SHSZSanbanFactorUpdateJob" desc=""/>
        </jobs>
    </verdatas>


</sdata-config>

 

 

maven依赖:

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

 

 

0
0
分享到:
评论
1 楼 masuweng 2018-01-12  
     

相关推荐

    w3c-dom.jar 包

    w3c-dom.jar 包 dom解析xml使用 包 免积分下载

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    java平台中使用DOM解析xml文件

    总的来说,理解并熟练掌握DOM解析XML是Java开发中的基础技能,无论是在简单的数据读取还是复杂的XML操作中,它都能提供强大的支持。同时,根据项目需求和性能考虑,可以选择JDOM等其他XML处理库作为替代方案。

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤: 1. 加载XML文档:首先,我们需要一个`DocumentBuilderFactory`实例来配置和创建`DocumentBuilder`,然后用`...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    Java与XML联合编程之DOM篇.rar_dom xml_dom xml java_java xml

    在Java中,DOM解析XML文件主要涉及到`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`这两个类。首先,我们创建一个`DocumentBuilderFactory`实例,然后用它来获取一个`...

    DOM解析xml文件实例讲解

    本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...

    java_xml.rar_XML java_java xml_java 读取 本地文件

    然后通过`SAXParserFactory`和`SAXParser`来设置解析器和解析XML文件。 四、Java写入XML 1. DOM写入: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import...

    java解析XML文件

    Java中的DOM解析主要依赖于`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类。以下是一个简单的示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....

    Java使用sax、dom、dom4j解析xml文档

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    java操作xml dom dom4j sax jdom

    例如,使用`DocumentBuilderFactory`创建`DocumentBuilder`,然后用`parse()`方法解析XML文件,最后通过`getElementsByTagName()`等方法访问节点。 2. SAX(Simple API for XML) 与DOM不同,SAX是基于事件驱动的...

    xml解析 dom方式 例子和讲解

    1. **导入库**:使用DOM解析XML时,我们需要导入javax.xml.parsers和org.w3c.dom相关的库。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...

    JAVA_dom解析xml

    下面是一个简单的DOM解析XML文件的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; ...

    w3c 生成xml 换行实例

    首先,需要导入必要的包,包括 java.io、javax.xml.parsers、javax.xml.transform 和 org.w3c.dom 等。这些包提供了 XML 文档的解析和生成功能。 接下来,创建一个名为 XMLHandler 的类,该类中包含一个名为 create...

    dom解析XML,普通解析

    DOM解析XML是处理XML数据的一种常见方式,尤其在Java编程中广泛使用。下面我们将深入探讨DOM解析XML的相关知识点。 1. DOM解析原理: DOM解析器读取整个XML文件,将其转换为内存中的对象树,每个XML元素、属性、...

    Java中Dom方式解析XML

    首先,我们需要导入Java的`javax.xml.parsers`和`org.w3c.dom`包,它们提供了DOM解析XML所需的类和接口。 ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...

    JavaXml.zip_java xml_javaXML_java解析xml_文档解析

    Java中,`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类用于创建和操作DOM模型。这种解析方式适合小型XML文档,因为大型文档可能会消耗大量内存。 2. SAX解析器:SAX是一种事件驱动的解析...

    java xml.java操作XML文档

    例如,使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可以创建和操作DOM树。以下是一个简单的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....

    Java与XML(一):采用DOM操作XML文件.docx

    下面是一个使用DOM解析XML文件的Java代码示例: ```java import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml....

Global site tag (gtag.js) - Google Analytics