首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XPath是比使用SAX / DOM解析器更好的读取配置文件的方法吗?

问XPath是比使用SAX / DOM解析器更好的读取配置文件的方法吗?
EN

Stack Overflow用户
提问于 2009-12-26 15:03:22
回答 2查看 806关注 0票数 2

是一种比DOM和SAX?更好的读取配置文件的方法。

如果是,

为什么log4j不使用XPathExpression来读取配置文件?

如果不是,

如果配置文件更改,我应该选择什么方法,这样就不必修改代码了?

更新: @kdgregory

通常,您知道在配置文件(甚至节点的完整路径)中要查找的参数。为什么不在这种情况下使用XPathExpression呢?这是否会使处理速度慢,因为每次后台解析都会发生?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-26 15:14:57

为什么log4j不使用XPathExpression来读取配置文件?

部分原因是XPath直到1.5才成为JDK的一部分,而Log4J的XML配置早于该版本。

但是可能更多的是因为Log4J配置文件是一个简单的层次结构,并且很容易遍历这样的结构并设置配置选项。如果您查看org.apache.log4j.xml.DOMConfigurator的源代码,您将看到一个非常短的调度循环,它查看元素名称,将其传递给特定于对象的解析器。

XPath是比DOM和SAX更好的读取配置文件的方法吗?

XPath不是DOM和SAX的替代品,而是它们之上的一个附加层。是的,您可以将任何InputSource传递给XPathExpression,也可以从任何InputStream创建InputSource,但是解析会在幕后进行。如果您必须在同一个文件上执行多个XPath表达式,那么将其解析为DOM非常有意义。

如果配置文件更改,我应该选择什么方法,这样就不必修改代码了?

配置文件通常会更改,因为代码会改变,而不是相反:添加要配置的特性,然后编写代码来配置它。

那么,何时应该使用XPath呢?哪里有更多的优势?

XPath的一个很好的用途是,当您需要从文件中提取特定的片段时,特别是当您提取它们的顺序与文件的文档顺序不相对应的时候。

最后:我强烈建议使用阿帕奇消化池或许多Java->XML序列化库中的任何一个,而不是使用显式XPath。

票数 3
EN

Stack Overflow用户

发布于 2009-12-27 06:23:11

当我只想从一个复杂的文档中获取一些信息,并且不想麻烦地处理整个结构时,我发现XPath很有用。例如,在使用selenium测试框架时,可以使用XPath表达式在网页中选择元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1963562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档