java读取xml节点,js获取xml节点值
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"%
????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进行文件操作。思路变化不大。