java读取xml节点,js获取xml节点值

http://www.itjxue.com  2023-01-15 00:17  来源:未知  点击次数: 

java读取带节点的xml数据

SAXBuilder b = new SAXBuilder();

Document read_doc = b.build(new File("datafiles/address.xml"));//换成你自己的文件路径

Element root = read_doc.getRootElement();

List status = root.getChildren("status");

for( int i = 0;ils.size();i++){

Element e = (Element)status.get(i);

String id= e.getChildText("id");

String created_at = e.getChildText("create_at");

String text = e.getChildText("text");

String user_name=e.getChild("user").getChildText("name");

String user_location=e.getChild("user").getChildText("location");

}

需要jdom包

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中指定节点中的内容

可以通过元素中的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文件

xml解析还是用dom4j方便,

import?java.util.List;

import?org.dom4j.Document;

import?org.dom4j.DocumentException;

import?org.dom4j.Element;

import?org.dom4j.io.SAXReader;

public?class?XMLPaser?{

public?static?void?main(String[]?args)?{

paserXML();

}

public?static?void?paserXML(){

SAXReader?reader?=?new?SAXReader();

try?{

//?读取XML文件

Document?doc?=?reader.read("NewFile.xml");

Element?root?=?doc.getRootElement();

System.out.println(root.getName());

ListElement?param?=?root.elements();

for?(Element?element?:?param)?{

if(element.attributeValue("name").equals("a")){

System.out.println(element.getText());

}

}

}?catch?(DocumentException?e)?{

e.printStackTrace();

}

}

}

java如何从一个xml文件读取根节点、子节点属性。

思路如下:

xml文件未知不明白什么意思?我索性就理解为一个目录下有很多xml文件,每个xml文件获取其中的bean节点属性。

1 有xml文件路径,获取该路径下的所有文件,用后缀“.xml”或“.XML”过滤得到xml文件。

2 javax.xml.parsers.DocumentBuilder builder = factory.newDocumentBuilder();

org.w3c.dom.Document doc = builder.parse(is); 创建文档对象。

3doc.getChildNodes()获取文档中所有的节点,循环遍历所得节点node,

通过node.getAttributes()获取节点所有属性,获取各个属性name和值即可,输出想要得到的数据。

或者通过doc.getElementsByTagName("bean");直接指定bean节点。然后用同样的方法获取属性名和值,输出。

以上是根据jdk的W3C库解析的。想方便可以通过dom4j、jdom进行文件操作。思路变化不大。

(责任编辑:IT教学网)

更多