java如何读取xml节点元素值?

 我来答
小傻

推荐于2016-10-20 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31133
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

java读取xml节点元素,主要使用java提供的解析xml的工具类SAXParserFactory,如下代码:

package xml.xmlreader;
import java.io.File;
import java.net.URL;
import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class CFGParser {//解析xml文件的工具类
    private Properties props;

    public Properties getProps() {
        return props;
    }
    public void setProps(Properties props) {
        this.props = props;
    }

    public void parse(String filename) throws Exception
    {
        CFGHandler handler = new CFGHandler();

        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(false);
        factory.setValidating(false);

        SAXParser parser = factory.newSAXParser();

        URL confURL = super.getClass().getClassLoader().getResource(filename);
        if (confURL == null) {
            System.out.println("Can't find configration file.");
            return;
        }
        try
        {
            parser.parse(confURL.toString(), handler);
            this.props = handler.getProps();
        }
        finally {
            factory = null;
            parser = null;
            handler = null;
        }
    }

    public void parseFile(String filename)
    throws Exception
    {
        CFGHandler handler = new CFGHandler();

        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(false);
        factory.setValidating(false);
        SAXParser parser = factory.newSAXParser();


        File f = new File(filename);
        if ((f == null) || (!f.exists()))
            return;
        try
        {
            parser.parse(f, handler);


            this.props = handler.getProps();
        }
        finally {
            factory = null;
            parser = null;
            handler = null;
        }
    }
}
package xml.xmlreader;
import java.util.Properties;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class CFGHandler extends DefaultHandler
{
  private Properties props;
  private String currentSet;
  private String currentName;
  private StringBuffer currentValue = new StringBuffer();

  public CFGHandler()
  {
    this.props = new Properties();
  }

  public Properties getProps() {
    return this.props;
  }

  public void startElement(String uri, String localName, String qName, Attributes attributes)
    throws SAXException
  {
    this.currentValue.delete(0, this.currentValue.length());
    this.currentName = qName;
  }

  public void characters(char[] ch, int start, int length) throws SAXException
  {
    this.currentValue.append(ch, start, length);
  }

  public void endElement(String uri, String localName, String qName)
    throws SAXException
  {
    this.props.put(qName.toLowerCase(), this.currentValue.toString().trim());
  }
}
xml文件


<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
        <refresh_userlist desc="用户列表刷新间隔时间(秒)">6</refresh_userlist>
        <refresh_message desc="短消息刷新间隔时间(秒)">10</refresh_message>
        <morningbegin desc="上午上班时间">23:00</morningbegin>
        <morningend desc="上午下班时间">12:00</morningend>
        <afternoonbegin desc="下午上班时间">18:00</afternoonbegin>
</xml-body>
jsp获取各个节点的值:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <jsp:useBean id="cfgp" scope="page" class="xml.xmlreader.CFGParser"></jsp:useBean>
    <body>
        <%
   cfgp.parse("kaoqin.xml");
   Properties pro = cfgp.getProps();
   String stTime = pro.getProperty("morningbegin");
   String edTime = pro.getProperty("morningend");
    String afternoonbegin = pro.getProperty("afternoonbegin");
   
   out.println(stTime+"\n"+edTime+"\n"+afternoonbegin);
   System.out.println(stTime+"\n"+edTime+"\n"+afternoonbegin);
    %>
    </body>
</html>
itcyt
2012-01-01 · 超过10用户采纳过TA的回答
知道答主
回答量:167
采纳率:100%
帮助的人:15.1万
展开全部
element.getAttributeValue("id")
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式