xml解析
发布时间:2020-12-16 07:39:01 所属栏目:百科 来源:网络整理
导读:XML文件: Sync desTable="M_Base_Customers" srcTable="reader" field desField="outid" srcField="rdid" update="false"/field desField="name" srcField="rdname" /field desField="sex" srcField="rdsex" /field desField="certificateid" value="0" upd
XML文件: <Sync desTable="M_Base_Customers" srcTable="reader" > <field desField="outid" srcField="rdid" update="false"/> <field desField="name" srcField="rdname" /> <field desField="sex" srcField="rdsex" /> <field desField="certificateid" value="0" update="false"/> <field desField="idcardno" srcField="rdcertify" /> <field desField="dpcode" value="001" update="false"/> <field desField="regstartyear" srcField="rdintime"/> <!-- <field desField="updateflag" value="1" /> ????--> <!-- <field desField="UPDATEDT" srcField="rdcertify" /> --> <field desField="ecode" value="00000000" update="false"/> <field desField="cardtype" value="1" update="false"/> <field desField="custsf" value="1" update="false"/> <field desField="nousedate" srcField="rdenddate"/> <field desField="nation" srcField="rdnation" /> <field desField="telephone" srcField="rdphone" /> <field desField="birthday" srcField="rdborndate" /> <field desField="address" srcField="rdaddress" /> <field desField="email" srcField="rdemail" /> </Sync> 第一步:获取Document对象 /* * 先把指定的xml文件转换成内存对象 * 通过xml文件得到org.w3c.dom.Document对象 */ public static Document getDocument(String file) { // 1.DocumentBuilderFactory DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = null; Document doc = null; try { // 2.DocumentBuilderFactory生产出DocumentBuiler documentBuilder = builderFactory.newDocumentBuilder(); // 3.DocumentBuiler通过xml文件名parse出org.w3c.dom.Document doc = documentBuilder.parse(file); } catch (Exception e) { e.printStackTrace(); } return doc; } 第二步:得到Sync根节点及其属性 // 得到了根节点 Element element = doc.getDocumentElement(); // 获取根节点的属性 element.getAttribute("desTable"); element.getAttribute("srcTable");
第三步:得到根节点Sync的子节点Fileld节点的集合 //Element extends Node,获取该Node的节点名为field的node集合 List<Node> nodeList = XmlUtils.getNodes(element,"field"); for (Node node:nodeList) { // 得到该Node的属性名为desField的属性值 XmlUtils.getProperty(node,"desField"); XmlUtils.getProperty(node,"srcField"); XmlUtils.getProperty(node,"value"); } 具体实现: 1.XmlUtils.getNodes(element,"field");
/** * 得到子节点的集合 * @param node 父节点 * @param nodeName 要得到的子节点的名字 * @return org.w3c.dom.Node */ public static List<Node> getNodes(Node node,String nodeName) { // 获取的是所有的子节点的集合,不区分节点名 NodeList nodeList = node.getChildNodes(); List<Node> usingNodeList = new ArrayList<Node>(); for (int i = 0; i < nodeList.getLength(); i++) { Node tempNode = nodeList.item(i); //只把指定的节点名的节点加入到集合中 if (nodeName.equalsIgnoreCase(tempNode.getNodeName())) { usingNodeList.add(tempNode); } } return usingNodeList; }2.XmlUtils.getProperty(node,"value"); /** * * @param node 要获取属性的节点 * @param propertyName 属性的名 * @return 属性值 */ public static String getProperty(Node node,String propertyName) { // 所有属性的值 NamedNodeMap attributes = node.getAttributes(); // 一切都是节点 Node attribute = attributes.getNamedItem(propertyName); if (attribute != null) { return attribute.getNodeValue(); } else { return null; } }最后,两个获取属性的地方的比较 根节点 element.getAttribute("desTable"); 非根节点 NamedNodeMap attributes = node.getAttributes(); Node attribute = attributes.getNamedItem(propertyName); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |