JAVA语言利用DOM解析XML文件

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;      import com.fujitsu.cn.model.Patent;   import com.fujitsu.cn.util.LogHelper;   /**   * 采用DOM解析xml文件   */   public class DOMDetailService {              public static Patent getPatent(InputStream inStream) throws Exception {           Patent patent = new Patent();                      LogHelper.v("domservice");                      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();           DocumentBuilder db = dbf.newDocumentBuilder();           Document document = db.parse(inStream);              //通过getDocumentElement()方法获得该xml文件的根节点            Element root = document.getDocumentElement();           //获得以 details为标签对的所有节点对的列表<details></details>            NodeList detailNodes = root.getElementsByTagName("details");                      //由于本xml文件中只有一个这样的标签对,通过item(i)得到该元素,并且进行强制转化            Element patentElement = (Element) detailNodes.item(0);           //获得该标签下面的所有标签的节点列表            NodeList childList = patentElement.getChildNodes();                      //对获得到的节点列表进行遍历   getLength()可以得到NodeList列表的长度            for(int i=0; i<childList.getLength();i++){               //遍历所有的属性节点   nodelist.item(i)返回一个Node节点                Node patentAttribut = (Node)childList.item(i);                              //由于可能会出现空的节点,对该节点进行判断,判断该节点是不是该xml中的元素                //Node.ELEMENT_NODE的值为1,表示该节点是一个Element                if(patentAttribut.getNodeType() == Node.ELEMENT_NODE){                   //通过getNodeName()得到该Node的名字                    //例如遍历到<type>3</type>,取值以后就是 type                    String tag = patentAttribut.getNodeName();               //getFirstChild()表示获得该节点下面的第一个孩子,getNodeValue()表示得到该孩子的值                //例如遍历到<type>3</type>通过该函数得到的值为3                    String val = patentAttribut.getFirstChild().getNodeValue();                   if("othercontents".equals(tag)){                                           patent.setOthercontents(val);                   }else                        if("publiccountry".equals(tag)){                           patent.setCountry(val);                   }else                       if("type".equals(tag)){                           patent.setType(val);                       }                   else                       if("title".equals(tag)){                           patent.setTitle(val);                       }                   else                       if("IPC".equals(tag)){                           patent.setIpc_number(val);                       }                   else                       if("status".equals(tag)){                           patent.setStatus(val);                       }                   else                       if("pagenum".equals(tag)){                           patent.setPagenum(val);                       }                   else                       if("submitid".equals(tag)){                           patent.setSubmit_number(val);                       }                   else                       if("inventors".equals(tag)){                           patent.setInventor(val);                       }                   else                       if("agent".equals(tag)){                           patent.setAgent(val);                       }                   else                       if("claims".equals(tag)){                           patent.setClaims(val);                       }                   else                       if("applicant".equals(tag)){                           patent.setProposer(val);                       }               }           }           inStream.close();           return patent;       }   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwgsy.html