请问如何解析下面的XML文件
高手帮个忙<?xml version="1.0" encoding="GBK" standalone="yes"?>
<upRule>
<devVersion>V1.0.0.0</devVersion>
<safeEquipmentType>1</safeEquipmentType>
<safeEquipmentTypeName>SF6</safeEquipmentTypeName>
<signalTypeStart>9</signalTypeStart>
<signalTypeEnd>16</signalTypeEnd>
<signalTypeName>遥信</signalTypeName>
<msgHead>11000000</msgHead>
    <msgEnd></msgEnd>
<msgAllLength>8</msgAllLength>
<msgType>1</msgType>
<msgTypeName>常州科能</msgTypeName>
<Lengthstart>17</Lengthstart>
<Lengthend>24</Lengthend>
</upRule>

解决方案 »

  1.   

    格式很简单用dom或者sax
    或者用正则式
    或者自己分析字符串
    都行
      

  2.   

    jdom自行下载:
    package com.parxml;import org.jdom.*;
    import org.jdom.input.*;
    import java.io.*;
    import java.util.*;/**
    * <p>
    * Description:本类实现对XML的解析操作
    * </p>
    * <p>
    * Copyright: Copyright (c) 2007
    * </p>
    * <p>
    * Company:QC
    * </p>

    * @version v1.0
    */public class ParserXML {public ParserXML(){
    //构造函数
    }/**
    * 解析XML到HashMap

    * @param xml
    * String:传入的XML
    * @param map
    * HashMap:解析后的MAP
    * @return HashMap
    * @throws JDOMException 
    * @throws IOException 
    */public HashMap XMLToMap(String xml,HashMap<String,String> map) throws JDOMException, IOException {
    if(map==null){
    map = new HashMap<String, String>();
    }
    InputStream in = new ByteArrayInputStream(xml.getBytes("gb2312"));
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(in);
    Element root = doc.getRootElement();
    boolean tag = elementToMap(root.getChildren(),map);
    if(!tag){
    map.clear();
    }
    return map;
    }/**
    * 把XML的内容的节点取出,转换成 Name = Value (键值对)的形式
    */
    private boolean elementToMap(List list, HashMap<String, String> map) {
    for (int i = 0; i < list.size(); i++) {
    Element emt = (Element) list.get(i);
    if (emt.getTextTrim() != null && emt.getTextTrim().length() > 0) {
    map.put(emt.getName(), emt.getTextTrim());
    }
    List listChildern = emt.getChildren();
    if (listChildern.size() > 0) {
    elementToMap(listChildern, map);
    }
    }
    return true;
    }/**
    * 转换XML属性值到HashMap

    * @param xml
    * String:传入的XML
    * @param map
    * HashMap:解析后的MAP
    * @return HashMap
    * @throws JDOMException 
    * @throws IOException 
    */
    public HashMap xmlAttributeToMap(String xml , HashMap<String,String> map) throws JDOMException, IOException{
    if(map==null){
    map = new HashMap<String, String>();
    }
    InputStream in = new ByteArrayInputStream(xml.getBytes("gb2312"));
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(in);
    Element root = doc.getRootElement();
    boolean tag = attributeElementToMap(root.getChildren(),map);
    if(!tag){
    map.clear();
    }
    return map;
    }
    /**
    * 把XML的内容节点取出,转换成 ParentName.SelfName = Value 的形式
    */
    public boolean attributeElementToMap(List list , HashMap<String, String> map){
    for (int i = 0; i < list.size(); i++) {
    Element e = (Element) list.get(i);
    List l_att = e.getAttributes();
    for (int t = 0; t < l_att.size(); t++) {
    Attribute attribute = (Attribute) l_att.get(t);
    String name = attribute.getName();
    String value = attribute.getValue();
    map.put(name, value);// 属性
    }
    java.util.List listChildern = e.getChildren();
    if (listChildern.size() > 0) {
    attributeElementToMap(listChildern, map);
    }
    }
    return true;
    }
    }  
      

  3.   

    可以考虑使用dom4j进行解析xml,其jar包需要添加至工程的Lib下,代码如下:package bean;import java.io.File;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;public class Test1 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Document document = null;
    Element upRule = null;
    List<Element> items = null;
    Map<String,String> result = new HashMap<String,String>();
    try {
    SAXReader sr=new SAXReader();
    //根据xml文件生成document对象
    document = sr.read(new File("src/bean/a.xml"));
    //获取根节点upRule
    upRule = document.getRootElement();
    //获取upRule下的每个节点值
    String devVersion=upRule.element("devVersion").getText();
    String safeEquipmentType=upRule.element("safeEquipmentType").getText();
    //省略其它的
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}
      

  4.   


    import java.io.File;
    import javax.xml.parsers.*;
    import org.w3c.dom.*;public class Test {
    public static void main(String[] args){
    try {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dbu;
    dbu = dbf.newDocumentBuilder();
    File f=new File("/tmp/1.xml");
    Document doc = dbu.parse(f);
    Element root = doc.getDocumentElement(); 
    NodeList upRule = root.getElementsByTagName("devVersion");
    System.out.println(upRule.item(0).getTextContent());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  5.   

    可以考虑使用dom4j进行解析xml。
      

  6.   

    jdom z自己慢慢研究吧 很简单的