任何人都可以告诉我哪个更好(JAXB或Apache XMLBeans)考虑到大于10Mb的文件的性能?
我一直在使用DOM来解析我的小xml文档.阅读有关JAXB(http://www.oracle.com/technetwork/articles/javase/index-140168.html)的内容,我打算使用JAXB DOM的实例.
如果这是一个正确的方法,请告诉我.
我需要解析一个XML流.因为我只需要做一次并构建我的java对象,所以SAX看起来是自然的选择.我正在扩展DefaultHandler并实现startElement,endElement和characters方法,在我的类中有成员保存当前读取值(在characters方法中).
我做我需要的东西没有问题,但我的代码变得非常复杂,我确信没有理由这样做,我可以做不同的事情.我的XML结构是这样的:
<players>
<player>
<id></id>
<name></name>
<teams total="2">
<team>
<id></id>
<name></name>
<start-date>
<year>2009</year>
<month>9</month>
</start-date>
<is-current>true</is-current>
</team>
<team>
<id></id>
<name></name>
<start-date>
<year>2007</year>
<month>11</month>
</start-date>
<end-date>
<year>2009</year>
<month>7</month>
</end-date>
</team>
</teams>
</player>
</players>
Run Code Online (Sandbox Code Playgroud)
当我意识到在文件的几个区域中使用相同的标记名称时,我的问题就出现了.例如,玩家和团队都存在id和name.我想创建我的java类Player和Team的实例.在解析时,我保留了布尔标志,告诉我我是否在团队部分,以便在endElement中我知道该名称是团队的名称,而不是玩家的名字等等.
这是我的代码的样子:
public class MyParser extends DefaultHandler {
private String currentValue;
private boolean inTeamsSection = false;
private Player player;
private Team team;
private List<Team> teams;
public void characters(char[] ch, int start, int length) throws SAXException {
currentValue = new String(ch, start, length);
}
public void startElement(String uri, String …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我需要将用户输入的数据保存在指定位置的XML文件中,我需要使用Java执行此操作.我对java中的XML处理相对比较新.我想就如何开始这项任务提出一些建议.
任何代码片段和链接都会有所帮助......
谢谢