- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 Apache Digester 时遇到问题,因为它在当前对象而不是在与父标记对应的对象中调用set 方法。结果是 NoSuchMethodException。
注意:由于性能问题,我正在重用 Digester 对象,但我在每次解析之前调用clear() 方法。
这是我的代码:(它是在 Header 对象上调用 setHeader 方法,而不是Message 对象)。
XML:
<message>
<header id_message="2014871" date="07/08/2014 21:56:41" />
<body>
...
</body>
</message>
以及创建消化器的代码:
digesterSOBB = new Digester();
digesterSOBB.setValidating(true);
digesterSOBB.setSchema(XMLParser.class.getResource(dtdUrlSOBB).getFile());
digesterSOBB.register("message", XMLParser.class.getResource(dtdUrlSOBB));
digesterSOBB.setErrorHandler(new XMLDtdValidationErrorHandler());
//Message
digesterSOBB.addObjectCreate("message", "com.company.utils.xmlparser.beans.sosc.Message");
digesterSOBB.addSetProperties("message");
//Header-I
digesterSOBB.addObjectCreate("message/header", "com.company.utils.xmlparser.beans.sosc.Header");
digesterSOBB.addSetProperties("message/header");
digesterSOBB.addSetNext("message/header", "setHeader", "com.company.utils.xmlparser.beans.sosc.Header");
它工作正常,但是,当它处理一些 xml 时,它尝试调用 Header 对象中的 setHeader 方法:
[8/7/14 5:22:00:322 CEST] 00000061 Digester E org.apache.commons.logging.impl.Jdk14Logger error End event threw exception
java.lang.NoSuchMethodException: No such accessible method: setHeader() on object: com.company.utils.xmlparser.Header
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:278)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:217)
at org.apache.commons.digester.Rule.end(Rule.java:253)
at org.apache.commons.digester.Digester.endElement(Digester.java:1332)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
...
我已经查看了 javadoc ( http://commons.apache.org/proper/commons-digester/commons-digester-2.0/docs/api/ ),代码似乎没问题(第二个参数是在父元素上调用的方法名称):
public void addSetNext(String pattern,
String methodName,
String paramType)
Add a "set next" rule for the specified parameters.
Parameters:
pattern - Element matching pattern
methodName - Method name to call on the parent element
paramType - Java class name of the expected parameter type (if you wish to use a primitive type, specify the corresonding Java wrapper class instead, such as java.lang.Boolean for a boolean parameter)
最佳答案
我没有使用过这个库,但是查看手册,它是基于堆栈的 - 当引用可能位于子对象(标题)下方的父对象(消息)时是否存在排序问题,而较新的对象位于堆栈顶部?
常见问题解答中有一些关于此的信息: http://wiki.apache.org/commons/Digester/FAQ
参见 -> 如何在 SetNextRule 之前触发 CallMethodRule?建议的示例序列是:
digester.addObjectCreate("parent", Parent.class);
digester.addObjectCreate("parent/child", Child.class);
digester.addSetNext("parent/child", "addChild");
digester.addCallMethod("parent/child", "setName", 1);
digester.addCallParam("parent/child/name", 0);
希望这有帮助。
关于java - Apache 消化器 : NoSuchMethodException: no such accesible method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203541/
所以基本上,我正在尝试学习如何使用 XAMPP 制作一个带有 MySQL 的 php 服务器。但是,当我尝试启动它时,启动按钮不起作用。由于某种原因,该按钮显示为灰色。 控制菜单的图像:https:/
我可以从类的实例访问方法吗?示例: class myClass { private static int n = 0; public static myClass()
我在使用 Apache Digester 时遇到问题,因为它在当前对象而不是在与父标记对应的对象中调用set 方法。结果是 NoSuchMethodException。 注意:由于性能问题,我正在重用
在Java中,我有一个如下所示的表达式: return (a.getValue() > b.getValue()) ? a.getValue() : b.getValue(); 当我大约 13 岁的时
我描述了问题。我有一个 CoreData 实体“New”。我正在使用带有 tableView 的 fetchedResultsController 来呈现对象。问题是当应用程序尝试更新标签时,它崩溃了
我在 stackoverflow 上进行了搜索,发现了很多帖子,所以我很确定它是重复的,但是我找不到任何对我来说友好且清晰的帖子,也许是因为我对 typescript 还很陌生。 我当前正在使用的是
我是 SpringBoot 的新手,我正在尝试通过 JPA(Hibernate) 对 mysql 进行 CRUD 访问 我关注了 https://spring.io/guides/gs/accessi
我定义了 2 个状态,其中一个“门票”匹配/tickets ... $stateProvider // define los estados de mi aplicacion .state("ti
是否有任何运行时断言:内存是只读的还是当前进程可以访问内存?(我对内核模式断言更感兴趣) 最佳答案 是的,but don't use it. 当然,内核中不存在“当前进程”的概念。通常,“当前进程”类
我有一个 Django 管理类,它声明了一个内联可迭代对象。像这样的东西: @admin.register(Category) class CategoryAdmin(admin.ModelAdmin
我有一些 asp.net 页面,我想拒绝通过直接链接访问它们。因此,我需要制作一个仅供管理员访问的页面和一个可供已登录用户访问的页面。 我该怎么做?有人可以解释或展示一个很好的例子吗? 谢谢 最佳答案
我有一个在我自己的服务器上运行的 (django) 网络应用程序。它有用户、权限等等。 每个用户都可以将文件上传到我的平台。为每个上传的文件在我的数据库中创建一个新条目,然后该文件存储在 AWS S3
我正在从同一个 TabNavigator 中的另一个屏幕访问 TabNavigator 中一个屏幕中的参数。 这就是我目前的做法: const siblingNavigator = props.nav
在一个带有 Apache Trinidad 的 JSF 1.1 项目中,我需要创建几个动态的 h:commandLink,并且它们需要被 JS 访问以便点击加载。 我有的是 js 的: var
你好,当我使用 localhost:3000 打开我的网站时,我遇到了“未初始化常量 DashboardController”的问题。它向我显示了上述错误。它不允许我进入用户端。 我有很多供管理员和用
我正在将 Spring 的 JdbcTemplate 与 PostgreSQL 一起使用。当我的应用程序执行以下代码行时,会抛出错误。该方法包含在到达该特定行之前链接成一行的其他只读查询执行。 在从映
尝试在 Synapse Studio 中运行以下简单命令时出现以下错误 df = spark.read.load('abfss://[email protected]/somefilepath.pa
我是一名优秀的程序员,十分优秀!