A. java读取xml文件内容
XMLStreamReaderreader=inputFactory.createXMLStreamReader(newFileInputStream(newFile("xmlPath")));//这里可以替换成一个流
List<Map<String,String>>dataList=newArrayList<Map<String,String>>();
while(reader.hasNext()){
intevent=reader.next();
if(event==XMLStreamConstants.START_ELEMENT){
//这里获取你的节点名称
if(reader.getName().equals("Hardware")){
intattrCount=reader.getAttributeCount();
Map<String,String>dataMap=newHashMap<String,String>();
for(inti=0;i<attrCount;i++){
StringattrName=reader.getAttributeLocalName(i);
StringattrValue=reader.getAttributeValue(i);
// System.out.println("----attrname:"+attrName);
// System.out.println("----attrvalue:"+attrValue);
dataMap.put(attrName,attrValue);
}
dataList.add(dataMap);
}
}
}
B. 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); 创建文档对象。
3>doc.getChildNodes()获取文档中所有的节点,循环遍历所得节点node,
通过node.getAttributes()获取节点所有属性,获取各个属性name和值即可,输出想要得到的数据。
或者通过doc.getElementsByTagName("bean");直接指定bean节点。然后用同样的方法获取属性名和值,输出。
以上是根据jdk的W3C库解析的。想方便可以通过dom4j、jdom进行文件操作。思路变化不大。
C. java中如何读取xml中数据。多节点的。给我一个例子,谢谢。
在我们的程序中,通常要有一些根据主机环境确定的变量.比如数据库访问用户名和密码,不同的主机可能设置不一样.只要更改XML配置文件,就可以正常运行.
localhost
sqlname
username
password
上面这个myenv.xml配置文件一般是放在tomcat的WEB-INF/classes目录下.
我们编制一个Java程序直接读取,将dbhost dbuser dbpassword提取出来供其他程序访问数据库用.
目前使用SAX比较的多,与DOM主要区别是 SAX是一行一行读取XML文件进行分析,适合比较大文件,DOM是一次性读入内存,显然不能对付大文件.这里我们使用SAX解析,由于SAX解析器不断在发展,网上有不少文章是针对老版本的.假如你使用JDK1.4 ,可以参考 使用SAX处理XML文档 一文.这里的程序是根据其改进并且经过实践调试得来的.
对上面myenv.xml读取的Java程序:
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.SAXException;
import java.util.Properties;
//使用DefaultHandler的好处 是 不必陈列出所有方法,
public class ConfigParser extends DefaultHandler {
////定义一个Properties 用来存放 dbhost dbuser dbpassword的值
private Properties props;
private String currentSet;
private String currentName;
private StringBuffer currentValue = new StringBuffer();
//构建器初始化props
public ConfigParser() {
this.props = new Properties();
}
public Properties getProps() {
return this.props;
}
//定义开始解析元素的方法. 这里是将中的名称xxx提取出来.
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
currentValue.delete(0, currentValue.length());
this.currentName =qName;
}
//这里是将之间的值加入到currentValue
public void characters(char[] ch, int start, int length) throws SAXException {
currentValue.append(ch, start, length);
}
//在碰到结束后,将之前的名称和值一一对应保存在props中
public void endElement(String uri, String localName, String qName) throws SAXException {
props.put(qName.toLowerCase(), currentValue.toString().trim());
}
}
上面的这个解析程序比较简单吧? 其实解析XML就是这么简单.
现在我们已经将dbhost dbuser dbpassword的值localhost sqlname username password提取了出来.但是这只是在在解析器内部,我们的程序还不能访问.需要再编制一个程序.
import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.net.URL;
public class ParseXML{
//定义一个Properties 用来存放 dbhost dbuser dbpassword的值
private Properties props;
//这里的props
public Properties getProps() {
return this.props;
}
public void parse(String filename) throws Exception {
//将我们的解析器对象化
ConfigParser handler = new ConfigParser();
//获取SAX工厂对象
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
//获取SAX解析
SAXParser parser = factory.newSAXParser();
//得到配置文件myenv.xml所在目录. tomcat中是在WEB-INF/classes
//下例中BeansConstants是用来存放xml文件中配置信息的类,可以自己代替或定义
URL confURL = BeansConstants.class.getClassLoader().getResource(filename);
try
{
//将解析器和解析对象myenv.xml联系起来,开始解析
parser.parse(confURL.toString(), handler);
//获取解析成功后的属性 以后 我们其他应用程序只要调用本程序的props就可以提取出属性名称和值了
props = handler.getProps();
}finally{
factory=null;
parser=null;
handler=null;
}
}
}
由于我们的XML文件是使用最简单的形式 ,因此解析器相对简单,但是这已经足够对付我们的配置文件了.
D. 如何用java取得XML节点的属性值
下个dom4j包我下面的方法笨了点不知道还有好的不
import java.io.File;
import java.util.Iterator;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
public class ResultXmlTest1 {
public static void main(String args[])
{
SAXReader reader=new SAXReader();
try
{
Document doc=reader.read(new File("result.xml"));
Element root=doc.getRootElement();
for(Iterator ite=root.elementIterator();ite.hasNext();)
{
Element ele=(Element)ite.next();
for(Iterator iter=ele.elementIterator();iter.hasNext();)
{
Element elem=(Element)iter.next();
//System.out.println(elem.getName());
for(Iterator itera=elem.elementIterator();itera.hasNext();)
{
Element eleme=(Element)itera.next();
//System.out.println(eleme.getName());
for(Iterator iterat=eleme.elementIterator();iterat.hasNext();)
{
Element elemem=(Element)iterat.next();
//System.out.println(elemem.getName());
for(Iterator iterato=elemem.elementIterator();iterato.hasNext();)
{
Element elememe=(Element)iterato.next();
//System.out.println(elememe.getName());
for(Iterator last=elememe.elementIterator();last.hasNext();)
{
Element elemLast=(Element)last.next();
//System.out.println(elemLast.getName());
for(Iterator at=elemLast.attributeIterator();at.hasNext();)
{
Attribute att=(Attribute)at.next();
if(att.getName().equals("start"))
System.out.println(att.getText());
}
}
}
}
}
}
}
}catch(DocumentException e)
{
e.printStackTrace();
}
}
}
E. JAVA读取xml文件中节点值
import w c dom *;
import javax xml parsers *;
import java io *;
public class Parse{
//Document可以看作是XML在内谈带斗存中的一个镜像 那么一旦获取这个Document 就意味着可以通过对
//内存的操作来实现对XML的操作 首先第一步获取XML相关的Document
private Document doc=null;
public void init(String xmlFile) throws Exception{
//很明显该类是一个单例 先获取产生DocumentBuilder工厂
//的工厂 在通过这个工厂产生一个DocumentBuilder
//DocumentBuilder就是用来含磨产生Document的
DocumentBuilderFactory dbf=DocumentBuilderFactory newInstance();
DocumentBuilder db=dbf newDocumentBuilder();
//这个Document就是一个XML文件在内存中的镜像
doc=db parse(new File(xmlFile));
}
//该方法负责把XML文件的内容显示出来
public void viewXML(String xmlFile) throws Exception{
this init(xmlFile);
//在xml文件里 只有一个根元素 先把根元素拿出来看看
Element element=doc getDocumentElement();
System out println( 根元素为: +element getTagName());
NodeList nodeList=doc getElementsByTagName( dbstore );
System out println( dbstore节点链的长度: +nodeList getLength());
Node fatherNode=em( );
System out println( 父节点为: +fatherNode getNodeName());
//把父节点的属性拿出来
NamedNodeMap attributes=fatherNode getAttributes();
for(int i= ;i<attributes getLength();i++){
Node attribute=em(i);
System out println( dbstore的属性名为: +attribute getNodeName()+ 相对应的属行芦性值为: +attribute getNodeValue());
}
NodeList childNodes = fatherNode getChildNodes();
System out println(childNodes getLength());
for(int j= ;j<childNodes getLength();j++){
Node childNode=em(j);
//如果这个节点属于Element 再进行取值
if(childNode instanceof Element){
//System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());
System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());
}
}
}
public static void main(String[] args)throws Exception{
Parse parse=new Parse();
//我的XML文件
parse viewXML( netct xml );
}
lishixin/Article/program/Java/hx/201311/26710
F. 如何用java获得xml文件中标签的属性列表值
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;public class MyXMLReader2JDOM {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("xmlcount.xml"));
Element foo = doc.getRootElement();
// List allChildren = foo.getChildren();
System.out.print( foo.getAttributeValue("month-count"));
System.out.println(foo.getAttributeValue("total-count"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
G. java中dom4j解析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文件 6 10 23:00 12:00 18:00jsp获取各个节点的值:
H. 如何用Java读取xml文件中的指定属性
利用 dom或者sax技术 读写xml
然后建议掘坦把取出来的 name值和last值放到数组判嫌桐里 然后进行排序者世
I. java获取xml节点属性
/**
*xml文件解析
*@authoryoung
*
*/
importjava.io.*;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
publicclassXmlExam{
publicstaticvoidmain(Stringargs[]){
Elementelement=null;
//可以使用绝对路劲
Filef=newFile("xml1.xml");
//documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
DocumentBuilderdb=null;
DocumentBuilderFactorydbf=null;
try{
//返回documentBuilderFactory对象
dbf=DocumentBuilderFactory.newInstance();
//返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
db=dbf.newDocumentBuilder();
//得到一个DOM并返回给document对象
Documentdt=db.parse(f);
//得到一个elment根元素埋凯祥
element=dt.getDocumentElement();
//获得根节点
System.out.println("根元素:"+element.getNodeName());
//获得根元素下孙歼的子节点
NodeListchildNodes=element.getChildNodes();
//遍历这些子节点
for(inti=0;i<childNodes.getLength();i++){
//获得每个对弯搏应位置i的结点
Nodenode1=childNodes.item(i);
if("txtbook".equals(node1.getNodeName())){
System.out.println(" 找到一个子节点:"
+node1.getNodeName()+".");
//获得<txtbook>下的节点
NodeListnodeDetail=node1.getChildNodes();
//遍历<txtbook>下的节点
for(intj=0;j<nodeDetail.getLength();j++){
//获得<wuxialist>元素每一个节点
Nodedetail=nodeDetail.item(j);
if("name".equals(detail.getNodeName()))//输出code
System.out
.println("name="+detail.getTextContent());
elseif("author".equals(detail.getNodeName()))//输出pass
System.out
.println("author="+detail.getTextContent());
}
}
}
}catch(Exceptione){
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
输出结果为:
J. java如何读取xml文件
// 读取输入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子节点
List<Element> elementList = root.elements();
// 遍历所有子节点
for (Element e : elementList)
map.put(e.getName(), e.getText());
// 释放资源
inputStream.close();
inputStream = null;
参考http://blog.csdn.net/lyq8479/article/details/8949088