导航:首页 > 编程语言 > java读取xml属性

java读取xml属性

发布时间:2023-04-14 07:27:33

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

阅读全文

与java读取xml属性相关的资料

热点内容
java000 浏览:447
华为手机文件夹的字体颜色 浏览:632
安卓怎么换相机 浏览:933
华为相片文件夹怎么删除重复照片 浏览:314
plc编程视频教程大全 浏览:938
直播用哪个app播放背景音乐 浏览:850
点歌机系统app在哪里下载 浏览:609
javadate类型转换string 浏览:694
RPG游戏解压后乱码 浏览:988
无线通信的几个密钥算法 浏览:644
王者荣耀app数据修复在哪里 浏览:429
基于单片机饮水机温度控制系统的设计 浏览:455
c中委托被编译后的结构 浏览:152
飞燕app怎么注销账号 浏览:895
cad命令缩小 浏览:154
linux发展史 浏览:629
服务器选用什么CPU比较好 浏览:334
明星怎么宣传安卓 浏览:953
8255芯片编程 浏览:65
java文件bat运行 浏览:747