導航:首頁 > 編程語言 > 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屬性相關的資料

熱點內容
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
java常見筆試 瀏覽:529
360程序員模式 瀏覽:363
AQS演算法的查詢樹構造 瀏覽:329
小豬微信營銷源碼 瀏覽:12