要点:
// 属性值获取 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 实例 介绍w3c中的元素的用法,以及在解析xml过程中用到的API进行详细解释
Ø 1、DOM(org.w3c.dom) Ø “文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。 Ø 2、SAX(org.xml.sax) Ø SimpleAPI for XML,以事件的形式通知程序,对Xml进行解析。 Ø 3、XMLPULL(org.xmlpull.v1) ...
// 解析XML文档的输入流,得到一个Document Document doc = dombuilder.parse(is); // 得到XML文档的根节点 Element root = doc.getDocumentElement(); // 得到节点的子节点 NodeList books = root....
* 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
Chenso 是一个 org.w3c.dom XML 包装器/解析器库。 基本用法 运行测试 视窗 gradlew test Unix ./gradlew test 建造 视窗 gradlew.bat build Unix ./gradlew build 用法 获取 XML 元素中名称的第一个值 String ...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
FluentXML4J-Java中XML的流畅API XML解析,序列化XPath查询和转换,无需样板代码 ...通过XPath查询org.w3c.dom.Document以获取String,Boolean,Number,org.w3c.dom.Element或Node,并使用Java 8 Streaming API
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...
3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...
项目-XML-L3 Xml-Java-解析器 在 Houari Boumediene 科技大学通用计算机科学 (ACAD) 的第三年第一学期进行的结构化文档项目,用于“结构化文档和 XML”模块 目标 目标是获取一个包含预定义 XML ...org.w3c.dom org.xml
然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。 SAX解析器采用了基于事件的...