CN107766107A - 基于Xpath 语言的xml文件通用解析器的解析方法 - Google Patents
基于Xpath 语言的xml文件通用解析器的解析方法 Download PDFInfo
- Publication number
- CN107766107A CN107766107A CN201711049813.XA CN201711049813A CN107766107A CN 107766107 A CN107766107 A CN 107766107A CN 201711049813 A CN201711049813 A CN 201711049813A CN 107766107 A CN107766107 A CN 107766107A
- Authority
- CN
- China
- Prior art keywords
- xpath
- xml
- xml document
- language
- universal parser
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种基于Xpath语言的xml文件通用解析器的解析方法,涉及java序列化与反序列化技术领域。包括以下内容:通过AI接口获取识别结果;调用xml文件通用解析器传入识别结果和筛选数据的XPath语句以及业务模板对象;使用Xpath语句直接过滤节点树;xml语言反序列化,利用xml文件通用解析器转换为Java业务对象;完成数据封装,返回业务实体对象。本发明采用Xpath后可灵活对节点进行类似sql语句一样的条件查询,使得代码拓展性更强。Xpath结合Dom4j技术具有降低代码耦合度,提高代码重用性的特点,能更好的适应业务变化。
Description
技术领域
本发明涉及java序列化与反序列化技术领域,更具体地,本发明的实施方式涉及基于Xpath语言的xml文件通用解析器的解析方法。
背景技术
现有解析技术通常先加载DOM信息到内存,然后分析DOM结构,分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作,由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。完成树形结构封装后才能进行DOM相关操作。另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,而且常用技术不能灵活处理dom中节点的筛选,只提供简单的检索功能。
现有的xml解析工具的解析流程如下
(1)根据xml模板建立对应的Java对象模板
(2)利用Dom4j解析dom树
(3)利用其它工具将dom树转换为Java对象模板
此期间xml模板和Java对象模板为对应关系,xml模板的变动可以导致流程(1),(2)的代码都要做相应修改,代码耦合较高,随着业务变动可能需要不断维护代码。
现有的解析器能够完成xml语言的反序列化过程,但是随着业务的变化需要对无用的数据进行筛选,减少数据传输量和业务复杂度,现有的技术就很难实现了。
发明内容
本发明的目的是针对上述背景技术中的缺陷,为解决AI识别结果,和第三方接口XML语言通信,提供一种基于Xpath语言的xml文件通用解析器的解析方法。
为了达到上述的技术效果,本发明采取以下技术方案:基于Xpath语言的xml文件通用解析器的解析方法,包括以下内容:
通过AI接口获取识别结果;
调用xml文件通用解析器传入识别结果和筛选数据的XPath语句以及业务模板对象;使用Xpath语句直接过滤节点树;
xml语言反序列化,利用xml文件通用解析器转换为Java业务对象;完成数据封装,返回业务实体对象。
进一步的技术方案是:基于Xpath语言的xml文件通用解析器的解析方法,xml提取器使用Dom4j读取XML示例文件,并处理每张发票。
进一步的技术方案是:基于Xpath语言的xml文件通用解析器的解析方法,通过跟换不同的Xpath语句使得xml提取器灵活的提取DOM节点,此后将生产的<invoice>元素和业务模板对象一并交给转换器使用getModel()利用反射技术将(DOM树)元素转换为业务实体对象。
本发明与现有技术相比,具有以下的有益效果:
采用Xpath后可灵活对节点进行类似sql语句一样的条件查询,使得代码拓展性更强。Xpath结合Dom4j技术具有降低代码耦合度,提高代码重用性的特点,能更好的适应业务变化。
Xpath是一门在XML文档中查找信息的语言,可用来在XML文档中对元素和属性进行遍历。Xpath是W3C XSLT标准的主要元素,并且XQuery和XPointer同时被构建于Xpath表达之上。因此,对Xpath的理解是很多高级XML应用的基础。
Xpath非常类似对数据库操作的SQL语言,或者说JQuery,它可以方便开发者抓起文档中需要的东西。(dom4j也支持Xpath)
虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的Xpath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始,它就一直处于开发之中。
为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性。
在添加灵活性、Xpath集成和对大文档处理的目标时,DOM4J的目标与JDOM是一样的:针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案,实现在本质上处理所有Java/XML问题的目标。在完成该目标时,它比JDOM更少强调防止不正确的应用程序行为。
附图说明
图1示出了根据本发明实施例的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例:
AI票据识别产生的识别结果会以xml语言模式返回到智能财务云平台系统,智能财务云平台系统需要将复杂的xml识别结果转换为业务对象进行业务处理,为了能适应变化的业务和筛选有用的处理结果,本实施例基于智能财务云平台系统,提供基于Xpath语言的xml文件通用解析器的解析方法,主要为解决AI识别结果,和第三方接口XML语言通信。
基于Xpath语言的xml文件通用解析器的解析方法,包括以下内容:
通过AI接口获取识别结果;
调用xml文件通用解析器传入识别结果和筛选数据的XPath语句以及业务模板对象(即图中的java模型);使用Xpath语句直接过滤节点树;
xml语言反序列化,利用xml文件通用解析器转换为Java业务对象;完成数据封装,返回业务实体对象。
基于xpath技术的xml文件通用解析器使用Xpath语句直接过滤节点树,灵活完成xml和java业务对象互相转换的功能,减少大量的数据过滤功能开发,节约了服务器资源的消耗。
实现原理:
XML提取器(Extractor)应用程序,使用Dom4j读取XML示例文件(invoices.xml),并处理每张发票。此方法通过创建和加载小DOMDocument文件为每个发票和发票已生成预期的输出后放弃它,从而节省内存—也就是说,一个包含帐单的XML文件。
首先,与Dom4j读取器(SAXXMLReader)连接到内容的处理程序(IVBSAXContentHandler)在MyExtractor类模块中实现。此内容的处理程序执行提取工作,连接到Dom4j筛选器(IVBSAXXMLFilter),它只允许通过与下面的XPath表达式匹配的事件︰
/invoice//*
此表达式松散转换为"使用子代或自身的匹配轴以选择的所有顶级内容<invoice>文件中的元素。"
可以使用此选择条件,模拟多个文档中的筛选的流IVBSAXContentHandler实现。执行此操作将通过激发Dom4j startDocument()和endDocument()事件的每个实例<invoice>示例XML文件中的元素。与Dom4j读取器已连接到编写器其输出(MXXMLWriter),其已配置为DOMDocument生成器来生成每个发票。
对于所有三个组件实现的接口,只有提取器是为此应用程序自定义生成的。筛选器还会调用应用程序方法(processInvoice)来处理下一个帐单,每次<invoice>元素结束,并相应DOMDocument树是DOM生成器中可用(MXXMLWriter)。
查看示例代码时,请注意Dom4j筛选器保持意识到输出实现(在此示例中,MXXMLWriter)正在执行什么操作。与Dom4j读取器和其内容的处理程序将输出定向。这意味着它仍可能更改该应用程序(例如,通过连接其输出到另一个自定义编写器)或通过将其连接到另一个筛选器而无需对应用程序中使用的当前筛选器代码的任何更改。就使给正在处理的每个DOM文档非常简单。transformNode方法应用XSLT样式表文件(invoice.xsl)到某个特定生成每个DOMDocument树<invoice>元素。这会生成发票的HTML版本,并将其显示在发票预览窗口中。应用程序还将每个发票的HTML版本保存到其自己的文件。这些文件被命名为根据发票xx.xml命名模式where xx的值number与每个关联属性<invoice>预览,并且生成的元素。
通过跟换不同的XPath语句可以使得XML提取器(Extractor)灵活的提取DOM节点,此后将生产的<invoice>元素和业务模板对象一并交给转换器(Eransverter)使用getModel()利用反射技术将元素(DOM树)转换为业务实体对象。
尽管这里参照本发明的解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。更具体地说,在本申请公开的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。
Claims (3)
1.基于Xpath语言的xml文件通用解析器的解析方法,其特征在于,包括以下内容:
通过AI接口获取识别结果;
调用xml文件通用解析器传入识别结果和筛选数据的XPath语句以及业务模板对象;使用Xpath语句直接过滤节点树;
xml语言反序列化,利用xml文件通用解析器转换为Java业务对象;完成数据封装,返回业务实体对象。
2.根据权利要求1所述的基于Xpath语言的xml文件通用解析器的解析方法,其特征在于:xml提取器使用Dom4j读取XML示例文件,并处理每张发票。
3.根据权利要求1所述的基于Xpath语言的xml文件通用解析器的解析方法,其特征在于:通过跟换不同的Xpath语句使得xml提取器灵活的提取DOM节点,此后将生产的<invoice>元素和业务模板对象一并交给转换器使用getModel()利用反射技术将(DOM树)元素转换为业务实体对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711049813.XA CN107766107A (zh) | 2017-10-31 | 2017-10-31 | 基于Xpath 语言的xml文件通用解析器的解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711049813.XA CN107766107A (zh) | 2017-10-31 | 2017-10-31 | 基于Xpath 语言的xml文件通用解析器的解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107766107A true CN107766107A (zh) | 2018-03-06 |
Family
ID=61271766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711049813.XA Pending CN107766107A (zh) | 2017-10-31 | 2017-10-31 | 基于Xpath 语言的xml文件通用解析器的解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766107A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519964A (zh) * | 2018-03-09 | 2018-09-11 | 中国工程物理研究院计算机应用研究所 | 将XML Schema文档转换为Java代码的方法 |
CN109241104A (zh) * | 2018-10-12 | 2019-01-18 | 北京聚云位智信息科技有限公司 | 决策型分布式数据库系统中aisql的解析器及其实现方法 |
CN109460219A (zh) * | 2018-09-28 | 2019-03-12 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 快速序列化接口控制文件的方法 |
CN109491727A (zh) * | 2018-10-16 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 对象序列化方法、终端设备及计算机可读存储介质 |
CN110245184A (zh) * | 2019-05-13 | 2019-09-17 | 中国邮政集团公司广东省分公司 | 一种基于tagSQL的数据处理方法、系统及装置 |
CN111104122A (zh) * | 2019-12-24 | 2020-05-05 | 联通(江苏)产业互联网有限公司 | 一种xml业务逻辑映射到java业务逻辑的方法 |
CN113721896A (zh) * | 2021-06-25 | 2021-11-30 | 中债金科信息技术有限公司 | 一种金融欺诈建模语言的优化处理方法及装置 |
CN114356453A (zh) * | 2021-12-30 | 2022-04-15 | 贵州爱信诺航天信息有限公司 | 基于COM模式为dom对象而支持浏览器的转换方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050760A1 (en) * | 2005-08-30 | 2007-03-01 | Erxiang Liu | Generation of application specific xml parsers using jar files with package paths that match the xml xpaths |
CN102622448A (zh) * | 2012-03-26 | 2012-08-01 | 中山大学 | 一种数字电视互动应用页面标记语言解析方法 |
CN102637129A (zh) * | 2012-03-14 | 2012-08-15 | 中山大学 | 将DOM4j解析引擎应用到数字电视HSML解析引擎的系统及方法 |
-
2017
- 2017-10-31 CN CN201711049813.XA patent/CN107766107A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050760A1 (en) * | 2005-08-30 | 2007-03-01 | Erxiang Liu | Generation of application specific xml parsers using jar files with package paths that match the xml xpaths |
CN102637129A (zh) * | 2012-03-14 | 2012-08-15 | 中山大学 | 将DOM4j解析引擎应用到数字电视HSML解析引擎的系统及方法 |
CN102622448A (zh) * | 2012-03-26 | 2012-08-01 | 中山大学 | 一种数字电视互动应用页面标记语言解析方法 |
Non-Patent Citations (2)
Title |
---|
OPENWUDI: ""Java开发笔记 — 反射、dom4j、xpath的综合小应用"", 《CSDN》 * |
ZHAO19861029: ""利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合"", 《CSDN》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519964A (zh) * | 2018-03-09 | 2018-09-11 | 中国工程物理研究院计算机应用研究所 | 将XML Schema文档转换为Java代码的方法 |
CN109460219A (zh) * | 2018-09-28 | 2019-03-12 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 快速序列化接口控制文件的方法 |
CN109460219B (zh) * | 2018-09-28 | 2021-09-03 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 快速序列化接口控制文件的方法 |
CN109241104A (zh) * | 2018-10-12 | 2019-01-18 | 北京聚云位智信息科技有限公司 | 决策型分布式数据库系统中aisql的解析器及其实现方法 |
CN109241104B (zh) * | 2018-10-12 | 2021-11-02 | 北京聚云位智信息科技有限公司 | 决策型分布式数据库系统中aisql的解析器及其实现方法 |
CN109491727A (zh) * | 2018-10-16 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 对象序列化方法、终端设备及计算机可读存储介质 |
CN110245184A (zh) * | 2019-05-13 | 2019-09-17 | 中国邮政集团公司广东省分公司 | 一种基于tagSQL的数据处理方法、系统及装置 |
CN110245184B (zh) * | 2019-05-13 | 2022-04-12 | 中国邮政集团公司广东省分公司 | 一种基于tagSQL的数据处理方法、系统及装置 |
CN111104122A (zh) * | 2019-12-24 | 2020-05-05 | 联通(江苏)产业互联网有限公司 | 一种xml业务逻辑映射到java业务逻辑的方法 |
CN111104122B (zh) * | 2019-12-24 | 2023-04-11 | 联通(江苏)产业互联网有限公司 | 一种xml业务逻辑映射到java业务逻辑的方法 |
CN113721896A (zh) * | 2021-06-25 | 2021-11-30 | 中债金科信息技术有限公司 | 一种金融欺诈建模语言的优化处理方法及装置 |
CN114356453A (zh) * | 2021-12-30 | 2022-04-15 | 贵州爱信诺航天信息有限公司 | 基于COM模式为dom对象而支持浏览器的转换方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766107A (zh) | 基于Xpath 语言的xml文件通用解析器的解析方法 | |
Collard et al. | An XML-based lightweight C++ fact extractor | |
US9619448B2 (en) | Automated document revision markup and change control | |
US7386558B2 (en) | Methods and systems for filtering an Extensible Application Markup Language (XAML) file to facilitate indexing of the logical content contained therein | |
US8402427B2 (en) | Web application generator | |
Sahuguet et al. | Wysiwyg web wrapper factory (w4f) | |
CN110555153A (zh) | 一种基于领域知识图谱的问答系统及其构建方法 | |
CN107391153B (zh) | 一种基于Spring与MyBatis框架整合的代码生成方法及装置 | |
CN109408811B (zh) | 一种数据处理方法及服务器 | |
CN101149732A (zh) | 由计算机使用的从自然语言文本开发本体的方法 | |
US11263062B2 (en) | API mashup exploration and recommendation | |
US20060294076A1 (en) | System and method for query planning and execution | |
CN116860987A (zh) | 基于生成式大语言模型的领域知识图谱构建方法和系统 | |
CN101571860A (zh) | 动态网页生成方法和装置、提取结构化数据的方法和装置 | |
Patrascoiu | Mapping EDOC to web services using YATL | |
CN100543741C (zh) | 自动下载和过滤网页的系统及方法 | |
CN101763432A (zh) | 一种轻量级网页动态视图快速构建方法 | |
CN108766507A (zh) | 一种基于CQL与标准信息模型openEHR的临床质量指标计算方法 | |
Butler et al. | Retrieving information from data flow diagrams | |
Nour | Performance of different (BIM/IFC) exchange formats within private collaborative workspace for collaborative work | |
Maletic et al. | Leveraging XML technologies in developing program analysis tools | |
Wessman et al. | A generalized framework for an ontology-based data-extraction system | |
Maazoun et al. | Feature Model Extraction from Product Source Codes based on the Semantic Aspect. | |
Ping et al. | Refactoring web sites to the controller-centric architecture | |
KR100704285B1 (ko) | 자원 디스크립션 프레임워크를 사용하여 제품 데이터온톨로지를 구성하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180306 |