java jaxb解析xml文件为一个对象,取值时需要大量判空 5C

jaxb解析xml文件为一个对象,对象内部嵌套较深,还要把这个对象转化为另一个对象,取值时需要大量的判空操作,请问哪位大神有好的解决思路?

6个回答

业务要求要判断,就必须 一个节点一个节点的解析判断,这种业务有点像保险公司的业务,
例如一个xml报文,要针对10家不同的公司,有的公司某个字段要求为空,有的要求不为空,同一个xml报文针对不同公司的需求,
可以用Command模式,对每家公司使用不通的解析模式
判断是否为空的话,对象判断可以用oval-1.81.jar 这个工具,xml解析判断这个是必须要自己写的,或者把xml解析出来后 放入对象
用oval-1.81.jar这个去验证,oval框架 具体可以参考http://blog.csdn.net/neweastsun/article/details/49154337

使用延迟加载。也就是在getter里,只有调用到它,才到xml里面找对应的下层对象。

如果这种业务比较多的话,建议自己去写xml解析引擎!

建议用dom4j解析算是比较简单

判断空好像没办法把,或者你可以用dom4j或者jdom

解析XML文件可以用 JDOM或者dom4j。这两个jar,在解析xml方面比较常用啊。 //增
public static void addXml() throws JDOMException, FileNotFoundException, IOException {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("src/xml/po.xml");//获得文档对象
Element root = doc.getRootElement();//获得根节点

//添加新元素
Element element = new Element("person");
element.setAttribute("id", "3");
Element element1 = new Element("username");
element1.setText("zhangdaihao");
Element element2 = new Element("password");
element2.setText("mima");
element.addContent(element1);
element.addContent(element2);
root.addContent(element);
doc.setRootElement(root);

//文件处理
XMLOutputter out = new XMLOutputter();
out.output(doc, new FileOutputStream("src/xml/po.xml"));
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问