gpt4 book ai didi

java - 使用 VTD-XML 的 log4j.xml 上的 XPath

转载 作者:行者123 更新时间:2023-11-30 09:10:02 36 4
gpt4 key购买 nike

我有这样的 validLog4jXML 字符串

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE log4j:eventSet PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd" >
<log4j:eventSet version="1.2" xmlns:log4j="http://jakarta.apache.org/log4j/" includesLocationInfo="true">
<log4j:event logger="org.apache.axis2.deployment.ClusterBuilder"
timestamp="1395925603261" level="INFO" thread="localhost-startStop-1">
<log4j:message>
<![CDATA[Clustering has been disabled]]>
</log4j:message>
</log4j:event>
</log4j:eventSet>

我尝试运行这段代码:

VTDGen doc = new VTDGen();
doc.setDoc(validLog4jXML.getBytes());
doc.parse(true);
VTDNav vn = doc.getNav();
AutoPilot ap = new AutoPilot(vn);
String xPath = "//log4j:event[(((@level=\"INFO\") or (@level=\"ERROR\")) and "
+ "(@timestamp>\"1395842943674\")) and (@timestamp<\"1396015743674\")]";
ap.selectXPath(xPath);

在最后一行我得到异常:

[ERROR] No URL found for prefix:log4j
com.ximpleware.XPathParseException: No URL found for prefix:log4j
at com.ximpleware.xpath.CUP$parser$actions.CUP$parser$do_action(parser.java:752)
at com.ximpleware.xpath.parser.do_action(parser.java:434)
at java_cup.runtime.lr_parser.parse(lr_parser.java:570)
at com.ximpleware.AutoPilot.selectXPath(AutoPilot.java:809)
at ad.ecs.library.LogHelper.collectLogNodesVTD(LogHelper.java:654)
at ad.ecs.library.LogHelper.collectLogNodesForADayVTD(LogHelper.java:571)
at ad.ecs.library.LogHelper.collectLogNodesForTheWeekVTD(LogHelper.java:456)
at ad.ecs.library.LogHelper.access$2(LogHelper.java:453)
at ad.ecs.library.LogHelper$2.run(LogHelper.java:313)
at java.lang.Thread.run(Thread.java:724)

我试图查看有关 VTD-XML 的文档,它说:

为了避免这个异常:

com.ximpleware.XPathParseException: No URL found for prefix:xyz

一定要创建具有命名空间支持的初始导航器对象(即,将最后一个参数设置为 true),并将命名空间散列作为最终参数传递给 find-indexes、first-match、all-matches 、get-xml 和 get-hash。

我尝试按照这些步骤进行操作,但没有成功。如果有任何帮助,我将不胜感激。

最佳答案

在使用 declareXPathNameSpace 的查询中使用命名空间之前,您必须先注册命名空间:

ap.declareXPathNameSpace(log4j, "http://jakarta.apache.org/log4j/");

关于java - 使用 VTD-XML 的 log4j.xml 上的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22717078/

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