1. java怎麼從XML里取出節點的值
可以用dom4j. 參考如下代碼(記得引入dom4j-1.6.1.jar和jaxen-1.1.4.jar):
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<CATALOG>
<allSong>
<Name>girl</Name>
<Time>2012.12.21</Time>
</allSong>
<CD>
<TITLE>EmpireBurlesque</TITLE>
<ARTIST>BobadDylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Coludafadmbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>EmpireBurlesque</TITLE>
<ARTIST>BobDylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CATALOG>
importjava.io.File;
importjava.util.List;
importorg.dom4j.Document;
importorg.dom4j.Element;
importorg.dom4j.io.SAXReader;
publicclassTest{
/**
*@paramargs
*@throwsException
*/
@SuppressWarnings({"rawtypes","unchecked"})
publicstaticvoidmain(String[]args)throwsException{
SAXReadersaxReader=newSAXReader();
FileinputFile=newFile("src/this.xml");
Documentdocument=saxReader.read(inputFile);
Elementroot=document.getRootElement();
Elemente=(Element)root.selectSingleNode("/CATALOG/allSong/Name");
//allSong節點下的Name節點的value
Stringname=e.getText();
System.out.println(name);
ListcdList=root.selectNodes("/CATALOG/CD/ARTIST");
Element[]cdArray=newElement[cdList.size()];
cdList.toArray(cdArray);
//第二個CD節點下的ARTIST節點的value
StringARTIST2=cdArray[1].getText();
System.out.println(ARTIST2);
}
}
2. 如何用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();
}
}
}
3. java如何獲取XML中子節點的內容
java中獲取xml節點元素值 根據不同的處理xml方式不同而不同。
java中解析xml的方式:大體可以使用以下四種
------------------------------------------------------------
DOM(Document Object Model)
為 XML 文檔的已解析版本定義了一組介面。解析器讀入整個文檔,
然後構建一個駐留內存的樹結構,然後代碼就可以使用 DOM 介面來操作這個樹結構。
優點:整個文檔樹在內存中,便於操作;支持刪除、修改、重新排列等多種功能;
缺點:將整個文檔調入內存(包括無用的節點),浪費時間和空間;
使用場合:一旦解析了文檔還需多次訪問這些數據;硬體資源充足(內存、CPU)
SAX(Simple API for XML)
為解決DOM的問題,出現了SAX。SAX ,事件驅動。
當解析器發現元素開始、元素結束、文本、文檔的開始或結束等時,發送事件,
程序員編寫響應這些事件的代碼,保存數據。優點:不用事先調入整個文檔,佔用資源少;
SAX解析器代碼比DOM解析器代碼小,適於Applet,下載。
缺點:不是持久的;事件過後,若沒保存數據,那麼數據就丟了;無狀態性;
從事件中只能得到文本,但不知該文本屬於哪個元素;
使用場合:Applet;只需XML文檔的少量內容,很少回頭訪問;機器內存少;
DOM4J
DOM4J 是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,
同時它也是一個開放源代碼的軟體。如今你可以看到越來越多的 Java 軟體都在使用 DOM4J 來讀寫 XML,
特別值得一提的是連 Sun 的 JAXM 也在用 DOM4J
JDOM
為減少DOM、SAX的編碼量,出現了JDOM;優點:20-80原則,極大減少了代碼量。
使用場合:要實現的功能簡單,如解析、創建等,但在底層,JDOM還是使用SAX(最常用)、DOM、Xanan文檔。
------------------------------
參考代碼
dom4j
------------------------------
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
---------------------------------------------
File f = new File("students.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
for (Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
// System.out.println(element.attributeValue("email"));
String ids=element.elementText("stuId");
System.out.println(ids);
String names=element.elementText("stuName");
System.out.println(names);
String ages=element.elementText("age");
System.out.println(ages);
}
------------------------------------
dom 方式
---------------
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
------------------------
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 允許名字空間
// factory.setNamespaceAware(true);
// 允許驗證
// factory.setValidating(true);
// 獲得DocumentBuilder的一個實例
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出異常時輸出異常信息,然後退出,下同
System.exit(1);
}
Document doc = null;
// 解析文檔,並獲得一個Document實例。
try {
try {
// InputStream is=new FileInputStream("students.xml");
doc = builder.parse("students.xml");
// doc = builder.parse(is);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
// System.exit(1);
}
for (int i = 0; i < nlStudent.getLength(); i++) {
Element elmtStudent = (Element) nlStudent.item(i);
String email = elmtStudent.getAttribute("email");
System.out.println(email);
NodeList ids = elmtStudent.getElementsByTagName("stuId");
Element id = (Element)ids.item(0);
Node tId = id.getFirstChild();
System.out.println(tId.getNodeValue());
NodeList names = elmtStudent.getElementsByTagName("stuName");
Element e = (Element)names.item(0);
Node tName = e.getFirstChild();
System.out.println(tName.getNodeValue());
}
4. java怎麼通過xml節點的屬性獲取這個節點的值
SAXReaderreader=newSAXReader();
Documentdocument=reader.read(newFileInputStream(f));//dom4j讀取
Stringxpath="/Record/Field[@name='Creator']";//查詢屬性type='Creator'
Elementelement=(Element)document.selectSingleNode(xpath);//得到name=Creator的元素
System.out.println(element.getText());
5. java怎麼獲得xml節點中的值
//1. 創建解析器
SAXReader saxreader = new SAXReader();
//2. 讀取文檔
Document doc = saxreader.read(new File("url"));
//3. 獲取根
Element root = doc.getRootElement();
//4. 獲取子節點
List<Element> list = root.elements();
for(Element e : list){
System.out.println(e.elementText("name"));
System.out.println(e.element("score").attributeValue("java"));
}
6. java語句如何獲取XML文件的節點值
package org.lxh.xml.dom ;
import java.io.* ;
import org.w3c.dom.* ;
import javax.xml.parsers.* ;
public class DOMDemo {
public static void main(String args[]) throws Exception {
// 取得DocumentBuilderFactory類的對象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
// 取得DocumentBuilder類的對象
DocumentBuilder build = factory.newDocumentBuilder() ;
Document doc = build.parse(new File("D:" + File.separator + "dom_demo_02.xml")) ;
NodeList nl = doc.getElementsByTagName("name") ;
// 輸出節點
System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue()) ;
}
}
7. .java中怎樣獲取xml中節點屬性,即:下文 aa 的值
直接上代碼了
importjava.io.IOException;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.NodeList;
importorg.xml.sax.SAXException;
publicclassParserxml{
publicstaticvoidmain(String[]args)throwsException{
getDataFromXml("NewFile.xml");
}
(Stringxmlpath)
,SAXException,IOException{
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
DocumentBuilderdb=dbf.newDocumentBuilder();
Documentdoc=db.parse(xmlpath);
doc.normalize();
NodeListlinks=doc.getElementsByTagName("proctData");
ElementitemLink=(Element)links.item(0).getChildNodes().item(1);
Stringstr=itemLink.getElementsByTagName("height").item(0).getAttributes().getNamedItem("aa").getNodeValue();
System.out.println("str-->"+str);//
}
}
8. java 從XML中取出某個節點的值
代碼如下:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class FileTest {
/**
* @param args
*/
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("d:/test.xml");
//得到根節點
Element root = doc.getDocumentElement();
NodeList nl = root.getElementsByTagName("id");
Element e = (Element) nl.item(0);
String id=e.getTextContent();
System.out.println("id的值為:"+id);
}catch(Exception e){
e.printStackTrace();
}
}
}
上面的代碼中我把
<message msgType="response" msgId="String" timestampCreated="2010-5-13 15:55:54" version="String">
<response>
<code>0</code>
<description>成功</description>
</response>
<body bodyId="1">
<id>11223344</id>
</body>
</message>
這段內容放到了D盤下的test.xml文件中
你如果要用可以直接將得到的給字元串載入成Document對象,就可以取到了。
9. java如何讀取xml節點元素值
java讀取xml節點元素,主要使用java提供的解析xml的工具類SAXParserFactory,如下代碼:
packagexml.xmlreader;
importjava.io.File;
importjava.net.URL;
importjava.util.Properties;
importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;
publicclassCFGParser{//解析xml文件的工具類
privatePropertiesprops;
publicPropertiesgetProps(){
returnprops;
}
publicvoidsetProps(Propertiesprops){
this.props=props;
}
publicvoidparse(Stringfilename)throwsException
{
CFGHandlerhandler=newCFGHandler();
SAXParserFactoryfactory=SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
SAXParserparser=factory.newSAXParser();
URLconfURL=super.getClass().getClassLoader().getResource(filename);
if(confURL==null){
System.out.println("Can'tfindconfigrationfile.");
return;
}
try
{
parser.parse(confURL.toString(),handler);
this.props=handler.getProps();
}
finally{
factory=null;
parser=null;
handler=null;
}
}
publicvoidparseFile(Stringfilename)
throwsException
{
CFGHandlerhandler=newCFGHandler();
SAXParserFactoryfactory=SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
SAXParserparser=factory.newSAXParser();
Filef=newFile(filename);
if((f==null)||(!f.exists()))
return;
try
{
parser.parse(f,handler);
this.props=handler.getProps();
}
finally{
factory=null;
parser=null;
handler=null;
}
}
}
packagexml.xmlreader;
importjava.util.Properties;
importorg.xml.sax.Attributes;
importorg.xml.sax.SAXException;
importorg.xml.sax.helpers.DefaultHandler;
{
privatePropertiesprops;
privateStringcurrentSet;
privateStringcurrentName;
=newStringBuffer();
publicCFGHandler()
{
this.props=newProperties();
}
publicPropertiesgetProps(){
returnthis.props;
}
publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattributes)
throwsSAXException
{
this.currentValue.delete(0,this.currentValue.length());
this.currentName=qName;
}
publicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException
{
this.currentValue.append(ch,start,length);
}
publicvoidendElement(Stringuri,StringlocalName,StringqName)
throwsSAXException
{
this.props.put(qName.toLowerCase(),this.currentValue.toString().trim());
}
}
xml文件
<?xmlversion="1.0"encoding="UTF-8"?>
<xml-body>
<refresh_userlistdesc="用戶列表刷新間隔時間(秒)">6</refresh_userlist>
<refresh_messagedesc="短消息刷新間隔時間(秒)">10</refresh_message>
<morningbegindesc="上午上班時間">23:00</morningbegin>
<morningenddesc="上午下班時間">12:00</morningend>
<afternoonbegindesc="下午上班時間">18:00</afternoonbegin>
</xml-body>
jsp獲取各個節點的值:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<html>
<jsp:useBeanid="cfgp"scope="page"class="xml.xmlreader.CFGParser"></jsp:useBean>
<body>
<%
cfgp.parse("kaoqin.xml");
Propertiespro=cfgp.getProps();
StringstTime=pro.getProperty("morningbegin");
StringedTime=pro.getProperty("morningend");
Stringafternoonbegin=pro.getProperty("afternoonbegin");
out.println(stTime+" "+edTime+" "+afternoonbegin);
System.out.println(stTime+" "+edTime+" "+afternoonbegin);
%>
</body>
</html>
10. java怎麼通過xml節點的屬性獲取這個節點的值
創建解析器
SAXReader saxreader = new SAXReader();
讀取文檔
Document doc = saxreader.read(new File("url"));
獲取根
Element root = doc.getRootElement();
獲取子節點
List<Element> list = root.elements();
System.out.println(e.elementText("name"));
System.out.println(e.element("score").attributeValue("java"));