要点:
// 属性值获取 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>
相关推荐
w3c-dom.jar 包 dom解析xml使用 包 免积分下载
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
总的来说,理解并熟练掌握DOM解析XML是Java开发中的基础技能,无论是在简单的数据读取还是复杂的XML操作中,它都能提供强大的支持。同时,根据项目需求和性能考虑,可以选择JDOM等其他XML处理库作为替代方案。
在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤: 1. 加载XML文档:首先,我们需要一个`DocumentBuilderFactory`实例来配置和创建`DocumentBuilder`,然后用`...
本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
在Java中,DOM解析XML文件主要涉及到`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`这两个类。首先,我们创建一个`DocumentBuilderFactory`实例,然后用它来获取一个`...
本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...
然后通过`SAXParserFactory`和`SAXParser`来设置解析器和解析XML文件。 四、Java写入XML 1. DOM写入: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import...
Java中的DOM解析主要依赖于`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类。以下是一个简单的示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
例如,使用`DocumentBuilderFactory`创建`DocumentBuilder`,然后用`parse()`方法解析XML文件,最后通过`getElementsByTagName()`等方法访问节点。 2. SAX(Simple API for XML) 与DOM不同,SAX是基于事件驱动的...
1. **导入库**:使用DOM解析XML时,我们需要导入javax.xml.parsers和org.w3c.dom相关的库。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...
下面是一个简单的DOM解析XML文件的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; ...
首先,需要导入必要的包,包括 java.io、javax.xml.parsers、javax.xml.transform 和 org.w3c.dom 等。这些包提供了 XML 文档的解析和生成功能。 接下来,创建一个名为 XMLHandler 的类,该类中包含一个名为 create...
DOM解析XML是处理XML数据的一种常见方式,尤其在Java编程中广泛使用。下面我们将深入探讨DOM解析XML的相关知识点。 1. DOM解析原理: DOM解析器读取整个XML文件,将其转换为内存中的对象树,每个XML元素、属性、...
首先,我们需要导入Java的`javax.xml.parsers`和`org.w3c.dom`包,它们提供了DOM解析XML所需的类和接口。 ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...
Java中,`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类用于创建和操作DOM模型。这种解析方式适合小型XML文档,因为大型文档可能会消耗大量内存。 2. SAX解析器:SAX是一种事件驱动的解析...
在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`等类来实现DOM解析。以下是一个简单的示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax...
例如,使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可以创建和操作DOM树。以下是一个简单的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....