「java读取xml节点」Java获取xml

博主:adminadmin 2022-12-26 14:18:06 78

本篇文章给大家谈谈java读取xml节点,以及Java获取xml对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎么取出xml中指定节点中的内容

可以通过元素中的getText方法获取到节点的内容。

举例:

SAXReader sax = new SAXReader();

Document document = sax.read(reader);//reader为定义的一个字符串,可以转换为xml

Element root = document.getRootElement();//获取到根节点元素String str = root .getText()//获取到节点的内容

用到的是dom4j-1.6.1.jar,需要引入的包是:

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

备注:如果是多个子节点可以通过”Element xx=root .element("code")“获取到子节点的元素,前提是需要知道子节点的名称。

java获取xml节点属性

/**

 * xml文件解析

 * @author young

 *

 */

import java.io.*;

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;

public class XmlExam {

public static void main(String args[]) {

Element element = null;

// 可以使用绝对路劲

File f = new File("xml1.xml");

// documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)

DocumentBuilder db = null;

DocumentBuilderFactory dbf = null;

try {

// 返回documentBuilderFactory对象

dbf = DocumentBuilderFactory.newInstance();

// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象

db = dbf.newDocumentBuilder();

// 得到一个DOM并返回给document对象

Document dt = db.parse(f);

// 得到一个elment根元素

element = dt.getDocumentElement();

// 获得根节点

System.out.println("根元素:" + element.getNodeName());

// 获得根元素下的子节点

NodeList childNodes = element.getChildNodes();

// 遍历这些子节点

for (int i = 0; i  childNodes.getLength(); i++) {

// 获得每个对应位置i的结点

Node node1 = childNodes.item(i);

if ("txtbook".equals(node1.getNodeName())) {

System.out.println("\r\n找到一个子节点: "

+ node1.getNodeName() + ". ");

// 获得txtbook下的节点

NodeList nodeDetail = node1.getChildNodes();

// 遍历txtbook下的节点

for (int j = 0; j  nodeDetail.getLength(); j++) {

// 获得wuxialist元素每一个节点

Node detail = nodeDetail.item(j);

if ("name".equals(detail.getNodeName())) // 输出code

System.out

.println("name= " + detail.getTextContent());

else if ("author".equals(detail.getNodeName())) // 输出pass

System.out

.println("author= " + detail.getTextContent());

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

这就是用java来解析xml文件。  要在java代码中导入xml解析的jar包。

4个jar包为:commons-beanutils.jar

commons-collections.jar

commons-digester.jar

commons-logging.jar

dom4j-1.6.1.jar

输出结果为:

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

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

java语句如何获取XML文件的节点值

你说的是获取指定id下面的节点的属性值吧!

程序如下,其中equal(“”)双引号中的值为节点的属性值

属性值获取如下:

package saxbuilder.ibm.xmlproperty;

import java.io.File;

import java.io.IOException;

import java.util.Iterator;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import org.jdom.JDOMException;

import org.jdom.input.SAXBuilder;

public class XmlProperty {

public Element element;

String path = "D:\\xml\\a.xml";

public void getElementProperty() {

File file = new File(path);

try {

SAXReader reader = new SAXReader();

Document dc = reader.read(file);

Element e = dc.getRootElement();

// 节点值

Element child = (Element) e.getQName("COMMAND");

System.out.println(child.toString());

// 一级节点

for (Iterator iterator = e.elementIterator(); iterator.hasNext();) {

Element el = (Element) iterator.next();

// 一级节点的属性信息

for (Iterator iterator2 = el.attributeIterator(); iterator2

.hasNext();) {

Attribute attribute = (Attribute) iterator2.next();

if(attribute.getName().equals("bodyCategory")){

System.out.println("attribute.getName()一级节点的属性信息+"+attribute.getName()+attribute.getValue());

}else{

System.out.println("attribute.getName()一级节点的属性信息+"+attribute.getName()+attribute.getValue());

}

// 二级节点

for (Iterator iterator3 = el.elementIterator(); iterator3

.hasNext();) {

Element ele = (Element) iterator3.next();

// 二级节点的属性信息

for (Iterator iterator4 = ele.attributeIterator(); iterator4

.hasNext();) {

Attribute attribute1 = (Attribute) iterator4.next();

if(attribute1.getName().equals("cmdType")){

System.out.println("attribute1.getName()二级节点的属性信息+"+attribute1.getName()+"+"+attribute1.getValue());

}else{

System.out.println("attribute1.getName()二级节点的属性信息+"+attribute1.getName()+"+"+attribute1.getValue());

}

}

}

}

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

关于java读取xml节点和Java获取xml的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。