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