「java读取xml节点」Java获取xml
本篇文章给大家谈谈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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-26,除非注明,否则均为
原创文章,转载请注明出处。