- 最近看了IBM关于解析XML的文章
由于之前只使用过DOM和SAX,对Digester产生兴趣,使用Digester要先倒入Digester的包,而DOM和SAX JDK有直接提供的方法。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-digester3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-digester3</artifactId>
<version>3.2</version>
</dependency>
文章中提到Digester适用场景在将XML直接转为JavaBean。我再xml中使用的标签都是大写字母比如 <L></L> (PS:单纯为了方便),接着使用的类的属性和标签相对应也是大写。
Digester digester=new Digester();
digester.addObjectCreate("Q",className);
digester.addBeanPropertySetter("Q/L");
Q q=(Q)digester.parse(file);
run的时候一直报错# java.lang.NoSuchMethodException: Bean has no property named
找了很久,最后在StackOverFlow上找到大神的回答才理解。
他的大概意思是根据java的设计原则,java属性值的开头必须为小写,而属性值和XML的标签是直接对应的,所以XML的标签也必须为小写。
网友评论