jsjgelei 2012-08-16 16:38
浏览 203
已采纳

帮忙把这个可变xml转成数组

xml属于可变的 取里面的big值及num值
如:11271

也可能是
11271271

11271271271<

  • 写回答

3条回答 默认 最新

  • angelbill3 2012-08-16 18:04
    关注

    simple.xml
    [code="java"]

    1
    1
    271
    271
    271

    [/code]
    用JAVA实现的
    [code="java"]

    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;

    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;

    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;

    /**

    • 功能描述:采用sax方式解析XML
    • @author XXX
    • 2012-08-16
      */
      public class SaxParseXml extends DefaultHandler{
      private String big;
      private List list;
      private String mark;
      //只调用一次 初始化list集合

      @Override
      public void startDocument() throws SAXException {
      list=new ArrayList();
      }

      //调用多次 开始解析
      @Override
      public void startElement(String uri, String localName, String qName,
      Attributes attributes) throws SAXException {
      if(attributes.getValue(0) != null){
      mark = qName;
      big = attributes.getValue(0);
      }
      }

      //调用多次

      @Override
      public void endElement(String uri, String localName, String qName)
      throws SAXException {
      mark = null;
      }

      //只调用一次
      @Override
      public void endDocument() throws SAXException {
      }

      //调用多次
      @Override
      public void characters(char[] ch, int start, int length)
      throws SAXException {
      if(mark !=null){
      String date=new String(ch,start,length);
      String[] str = {big,date};
      list.add(str);
      }
      }

      public void getParser(){

      }

      public static void main(String[] args) {
      SAXParser parser = null;
      try {
      //构建SAXParser
      parser = SAXParserFactory.newInstance().newSAXParser();
      //实例化 DefaultHandler对象
      SaxParseXml parseXml=new SaxParseXml();
      //加载资源文件 转化为一个输入流
      InputStream stream=SaxParseXml.class.getClassLoader().getResourceAsStream("simple.xml");
      //调用parse()方法
      parser.parse(stream, parseXml);
      //遍历结果
      for(String[] str:parseXml.getList()){
      System.out.println(str[0] + "," + str[1]);
      }
      } catch (ParserConfigurationException e) {
      e.printStackTrace();
      } catch (SAXException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }

      public String getBig() {
      return big;
      }

      public void setBig(String big) {
      this.big = big;
      }

      public String getMark() {
      return mark;
      }

      public void setMark(String mark) {
      this.mark = mark;
      }

      public List getList() {
      return list;
      }

      public void setList(List list) {
      this.list = list;
      }
      }

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序