導航:首頁 > 編程語言 > java獲取xml節點的值

java獲取xml節點的值

發布時間:2022-03-09 12:30:32

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節點的屬性獲取這個節點的值

  1. 創建解析器
    SAXReader saxreader = new SAXReader();

  2. 讀取文檔
    Document doc = saxreader.read(new File("url"));

  3. 獲取根
    Element root = doc.getRootElement();

  4. 獲取子節點
    List<Element> list = root.elements();

  5. System.out.println(e.elementText("name"));
    System.out.println(e.element("score").attributeValue("java"));

閱讀全文

與java獲取xml節點的值相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:62
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1003
命令zpa 瀏覽:286
python編譯器小程序 瀏覽:945
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:593
安卓卸載組件應用怎麼安裝 瀏覽:913
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:433
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:401
夢幻端游長安地圖互通源碼 瀏覽:746
電腦本地文件如何上傳伺服器 瀏覽:313