xml文件的格式为
<?xml version="1.0" encoding="GBK"?> <CIBOFP> <HEAD> <APPCODE>111111</APPCODE> <BUSCD>1104</BUSCD> <EXSERIAL>75</EXSERIAL> <DATE>20150518</DATE> <TIME>183320</TIME> </HEAD> <BODY> <CREDITAPPID>75</CREDITAPPID> <MORTGAGORNO>借款人编号</MORTGAGORNO> <MORTGAGORNAME>借款人名名</MORTGAGORNAME> <STATUS>2</STATUS> <LIMITLIST> <LIMIT> <FINANCINGTYPE>1</FINANCINGTYPE> <AMOUNT>100000</AMOUNT> </LIMIT> <LIMIT> <FINANCINGTYPE>1</FINANCINGTYPE> <AMOUNT>200000</AMOUNT> </LIMIT> <LIMIT> <FINANCINGTYPE>1</FINANCINGTYPE> <AMOUNT>300000</AMOUNT> </LIMIT> </LIMITLIST> <REMARK>备注</REMARK> </BODY> </CIBOFP>
java的解析方法
import java.io.FileInputStream; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * 测试使用java自带的xml解析器 * @author test */ public class TestDomParse { public static void main(String[] args) { DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); String filename = "E:\\workspaceeclipse\\common-xingye\\src\\main\\resources\\1004.xml"; try { //产生解析实例 DocumentBuilder dombuilder = domfac.newDocumentBuilder(); //把XML文件读入放在FileInputStream中,并用其父类InputStream的实例接受 InputStream is = new FileInputStream(filename); //根据输入XML文件流解析成Document结构,供下面遍历与操作使用 Document doc = dombuilder.parse(is); //获取根结点CIBOFP Element root = doc.getDocumentElement(); System.out.println(root.getTagName()); //System.out.println(root.getTextContent()); NodeList head= root.getElementsByTagName("HEAD"); Node body= root.getElementsByTagName("BODY").item(0); //HEAD 的解析 System.out.println(head.item(0).getNodeName()+"的解析开始"); for(int i=0;i<head.getLength();i++){ Node n = head.item(i); //System.out.println(n.getNodeName()+" "+n.getTextContent()); NodeList headNodeList = n.getChildNodes(); for(int j=0;j<headNodeList.getLength();j++){ Node hn = headNodeList.item(j); //使用hn.getNodeType()==Node.ELEMENT_NODE 防止打印空白 if(hn.getNodeType()==Node.ELEMENT_NODE){ System.out.println(hn.getNodeName()+" "+hn.getTextContent()); } } } //BODY的解析 System.out.println(body.getNodeName()+"的解析开始"); NodeList bodyList = body.getChildNodes(); for(int a=0;a<bodyList.getLength();a++){ Node n2 = bodyList.item(a); //防止打印空白 //System.out.println(n.getNodeName()+" n type "+n.getNodeType()); if(n2.getNodeType()==Node.ELEMENT_NODE){ if(n2.getNodeName().equals("LIMITLIST")){ System.out.println(n2.getNodeName()+"节点解析"); //LIMITLIST 节点 NodeList limitList = n2.getChildNodes(); for(int b=0;b<limitList.getLength();b++){ Node limit = limitList.item(b); //防止打印空白 if(limit.getNodeType()==Node.ELEMENT_NODE){ System.out.println(limit.getNodeName()+"节点解析"); //LIMIT NodeList t = limit.getChildNodes(); for(int c=0;c<t.getLength();c++){ Node l = t.item(c); //防止打印空白 if(l.getNodeType()==Node.ELEMENT_NODE){ System.out.println(l.getNodeName()+" "+l.getTextContent()); } } } } }else{ System.out.println(n2.getNodeName()+" "+n2.getTextContent()); } } } } catch (Exception e) { e.printStackTrace(); } } }
解析还是比较费劲