gpt4 book ai didi

java - 与使用 SAX/DOM 解析器相比,XPath 是一种更好的读取配置文件的方法吗?

转载 作者:行者123 更新时间:2023-12-04 07:00:23 25 4
gpt4 key购买 nike

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

如果是,

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

如果不,

我应该选择什么方法,这样如果我的配置文件发生变化,我就不必修改代码?

更新:
@kdgregory

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

最佳答案

Why does not log4j uses XPathExpression to read configuration file?



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

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

Is XPath a better way to read configuration file than DOM and SAX?



XPath 不是 DOM 和 SAX 的替代品,它是它们之上的附加层。是的,您可以通过任何 InputSourceXPathExpression ,您可以创建一个 InputSource来自任何 InputStream ,但随后解析发生在幕后。如果您必须在同一个文件上执行多个 XPath 表达式,那么将它一次解析为 DOM 是很有意义的。

What method should I choose so that I do not have to modify the code if my configuration file changes?



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

So, when should XPath be used? Where it has more advantage?



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

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

关于java - 与使用 SAX/DOM 解析器相比,XPath 是一种更好的读取配置文件的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com