導航:首頁 > 編程語言 > documentxmljava

documentxmljava

發布時間:2023-08-25 15:10:44

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

Ⅱ JAVA讀寫XML,加下注釋

public class w3c_Xml {
//得到dom的解析工廠

static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

static DocumentBuilder builder = null;

public static void readXML() {
try {
//得到真正的解析器
builder = factory .newDocumentBuilder();
//得到此xml文件的容器上下文或句柄或根節點
Document document = builder.parse(new File("E:\\Projects\\NyWeb\\NyWebBase\\version1.0\\Project\\fd\\WebRoot\\WEB-INF\\web.xml"));
//得到根節點
Element rootElement = document.getDocumentElement();
//在xml中把Header前面的空格也當成了一個節點,所以我們拿值時還要在拿NodeList
NodeList list = rootElement.getElementsByTagName("Header");
Element element = (Element) list.item(0);
//在java中他把<Header>也作為了一個節點,所以我們拿值時,拿他下面的第一個孩子節點,即getFirstChild然後在getNodeValue()才能拿到值
System.out.println(element.getChildNodes().item(0).getNodeValue());

} catch (Exception e) {
System.out.println("exception:" + e.getMessage());
}
}

public static void writeXML(Document document,String filename)
{
try {
builder = factory .newDocumentBuilder();
document.normalize();

/** 將document中的內容寫入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//編碼
DOMSource source = new DOMSource(document);
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}

}

public static void updateXML()
{
try {
builder = factory .newDocumentBuilder();
Document document = builder.parse(new File("E:\\Projects\\NyWeb\\NyWebBase\\version1.0\\Project\\fd\\WebRoot\\WEB-INF\\web.xml"));
Node root = document.getDocumentElement();
/**如果root有子元素*/
if(root.hasChildNodes())
{
NodeList ftpnodes = root.getChildNodes();
/**循環取得ftpnodes所有節點*/
for(int i=0;i<ftpnodes.getLength();i++)
{
Node ftpList = ftpnodes.item(i);
//System.out.println(ftpList.getTextContent());
}
for(int i=0;i<ftpnodes.getLength();i++)
{
Node ftpList = ftpnodes.item(i);
ftpList.setTextContent(ftpList.getTextContent()+" update");
}
}
writeXML(document,"E:\\Projects\\NyWeb\\NyWebBase\\version1.0\\Project\\fd\\WebRoot\\WEB-INF\\web.xml");

} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args)
{
readXML();
updateXML();
}
}

Ⅲ 如何用Java實現對xml文件的讀取和寫入以及保存

直接附源碼import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.*;
import org.dom4j.io.XMLWriter;
public class Dom4jSample { public static void main(String[] args) {
Dom4jSample dom4jSample = new Dom4jSample();
Document document = dom4jSample.createDocument();
try{
dom4jSample.FileWrite(document);

Document documentStr = dom4jSample.StringToXML("<China>I Love!</China>");
dom4jSample.XMLWrite(documentStr);

Element legend = dom4jSample.FindElement(document);
System.out.println(legend.getText());
}
catch(Exception e)
{

}
}

/*
* Create a XML Document
*/
public Document createDocument()
{
Document document = DocumentHelper.createDocument();

Element root = document.addElement("root");

Element author1 = root.addElement("Lynch");
author1.addAttribute("Age","25");
author1.addAttribute("Country","China");
author1.addText("I am great!");

Element author2 = root.addElement("Legend");
author2.addAttribute("Age","25");
author2.addAttribute("Country","China");
author2.addText("I am great!too!");

return document;
}

/*
* Create a XML document through String
*/
public Document StringToXML(String str) throws DocumentException
{
Document document = DocumentHelper.parseText(str);
return document;
}
public Element FindElement(Document document)
{
Element root = document.getRootElement();
Element legend = null;
for(Iterator i=root.elementIterator("legend");i.hasNext();)
{
legend = (Element)i.next();
}
return legend;
}

/*
* Write a XML file
*/
public void FileWrite(Document document) throws IOException
{
FileWriter out = new FileWriter("C:/Dom2jSample.xml");
document.write(out);
out.close();
}

/*
* Write a XML format file
*/
public void XMLWrite(Document document) throws IOException
{
XMLWriter writer = new XMLWriter(new FileWriter("C:/Dom2jSampleStr.xml"));
writer.write(document);
writer.close();
}
}

Ⅳ java中用document在xml中添加內容時,如何換行

換行符"\r\n",如是用dom4j之類的jar包操作,dom4j換行如下
/**
* 通過 org.dom4j.io.OutputFormat 來設置XML文檔輸出格式
*/
OutputFormat format = OutputFormat.createPrettyPrint(); //設置XML文檔輸出格式
format.setEncoding("GB2312"); //設置XML文檔的編碼類型
format.setSuppressDeclaration(true);
format.setIndent(true); //設置是否縮進
format.setIndent(" "); //以空格方式實現縮進
format.setNewlines(true); //設置是否換行

Ⅳ java 關於讀取xml文件的問題

用dom4j

dom4j 需要一個jar包 網上有下載 一搜很多的。

1.讀取XML文件,獲得document對象。

SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));

2.解析XML形式的文本,得到document對象。

String text = "<members></members>";
Document document = DocumentHelper.parseText(text);

3.主動創建document對象。

Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 創建根節點

二、節點相關

1.獲取文檔的根節點。

Element rootElm = document.getRootElement();

2.取得某節點的單個子節點。

Element memberElm=root.element("member");// "member"是節點名

3.取得節點的文字

String text=memberElm.getText();也可以用:
String text=root.elementText("name");這個是取得根節點下的name位元組點的文字

4.取得某節點下名為"member"的所有位元組點並進行遍歷

List nodes = rootElm.elements("member");

for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}

5.對某節點下的所有子節點進行遍歷。

for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}

6.在某節點下添加子節點。

Element ageElm = newMemberElm.addElement("age");

7.設置節點文字。

ageElm.setText("29");

8.刪除某節點。

parentElm.remove(childElm);// childElm是待刪除的節點,parentElm是其父節點

三、屬性相關。

1.取得某節點下的某屬性

Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 屬性名name

2.取得屬性的文字

String text=attribute.getText();也可以用:
String text2=root.element("name").attributeValue("firstname");這個是取得根節點下name位元組點的屬性firstname的值

3.遍歷某節點的所有屬性

Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}

4.設置某節點的屬性和文字。

newMemberElm.addAttribute("name", "sitinspring");

5.設置屬性的文字

Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");

6.刪除某屬性

Attribute attribute=root.attribute("size");// 屬性名name
root.remove(attribute);

Ⅵ java怎樣讀寫和修改XML文件

xml:

<?xml version="1.0" encoding="UTF-8"?>

<users>

<Messages>
<sendName>sendUsers</sendName>
<receiveName>snake</receiveName>
<date>2007-12-04 12:20:00</date>
<status>0</status>
<message>this is Content</message>
</Messages>

</users>

java:

package com.lianxi.DAO;
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class UpdateXml {
public static boolean doc2XmlFile(Document document,String filename)
{
boolean flag = true;
try
{
/** 將document中的內容寫入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 編碼 */
//transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
}catch(Exception ex)
{
flag = false;
ex.printStackTrace();
}
return flag;
}

public static Document load(String filename)
{
Document document = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
document=builder.parse(new File(filename));
document.normalize();
}
catch (Exception ex){
ex.printStackTrace();
}
return document;
}
/**
* 演示修改文件的具體某個節點的值
*/
public static void xmlUpdateDemo()
{
Document document = load("c://Message.xml");
Node root=document.getDocumentElement();
/** 如果root有子元素 */
if(root.hasChildNodes())
{
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循環取得ftp所有節點 */
for (int i=0;i<ftpnodes.getLength();i++)
{
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k=0;k<ftplist.getLength();k++)
{
Node subnode = ftplist.item(k);
/** 刪除ftp-chn節點 */
// if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-chn")
// {
// ftpnodes.item(i).removeChild(subnode);
// }
/** 修改ftp-host的值為 192.168.0.1 */
if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="status")
{
subnode.getFirstChild().setNodeValue("1");
}
}

}
}

doc2XmlFile(document,"c://Message.xml");
}
public static void main(String args[])throws Exception
{
UpdateXml.xmlUpdateDemo();
}
}

Ⅶ 在java在如何解析XML文件

在java環境下讀取xml文件的方法主要有4種坦談:DOM、SAX、JDOM、JAXB
1. DOM(Document Object Model)
此方法主要由W3C提供,它將xml文件全部讀入內存中,然後將各個元素組成一棵數據樹,以便快速的訪問各個節點 。 因此非常消耗系統性能 ,對比較大的文檔不適宜採用DOM方法來解析。 DOM API 直接沿襲了 XML 規范。每個結點都可以擴展的基於 Node 的介面,就多態性的觀點來講,它是優秀的,但是在 Java 語言中的應用不方便,並且可讀性不強。
實例:
import javax.xml.parsers.*;
//XML解析器介面
import org.w3c.dom.*;
//XML的DOM實現
import org.apache.crimson.tree.XmlDocument;
//寫讓租碰XML文件要用到

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//允許名字空間
factory.setNamespaceAware(true);
//允許驗證
factory.setValidating(true);
/型如/獲得DocumentBuilder的一個實例
try {
DocumentBuilder builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出異常時輸出異常信息,然後退出,下同
System.exit(1);
}
//解析文檔,並獲得一個Document實例。
try {
Document doc = builder.parse(fileURI);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}

//獲得根節點StuInfo
Element elmtStuInfo = doc.getDocumentElement();

//得到所有student節點
NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(
strNamespace, "student");
for (……){
//當前student節點元素
Element elmtStudent = (Element)nlStudent.item(i);

NodeList nlCurrent = elmtStudent.getElementsByTagNameNS(
strNamespace, "name");
}

Ⅷ 在java中解析xml有哪幾種方法

(1)DOM解析
DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取
和操作文檔的任意部分,是W3C的官方標准
【優點】
①允許應用程序對數據和結構做出更改。
②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。
【缺點】
①通常需要載入整個XML文檔來構造層次結構,消耗資源大。
【解析詳解】
①構建Document對象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = bdf.newDocumentBuilder();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(xml文件);
Document doc = bd.parse(is);
②遍歷DOM對象
Document: XML文檔對象,由解析器獲取
NodeList: 節點數組
Node: 節點(包括element、#text)
Element: 元素,可用於獲取屬性參數
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法
完成解析工作,解析XML文檔的邏輯需要應用程序完成
【優勢】
①不需要等待所有數據都被處理,分析就能立即開始。
②只在讀取數據時檢查數據,不需要保存在內存中。
③可以在某個條件得到滿足時停止解析,不必解析整個文檔。
④效率和性能較高,能解析大於系統內存的文檔。
【缺點】
①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關系等),文檔越復雜程序就越復雜。
②單向導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。
【原理】
簡單的說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束時通知事件
處理函數(回調函數),進行相應處理,直到文檔結束
【事件處理器類型】
①訪問XML DTD:DTDHandler
②低級訪問解析錯誤:ErrorHandler
③訪問文檔內容:ContextHandler
【DefaultHandler類】
SAX事件處理程序的默認基類,實現了DTDHandler、ErrorHandler、ContextHandler和EntityResolver介面,通常
做法是,繼承該基類,重寫需要的方法,如startDocument()
【創建SAX解析器】
SAXParserFactory saxf = SAXParserFactory.newInstance();
SAXParser sax = saxf.newSAXParser();
註:關於遍歷
①深度優先遍歷(Depthi-First Traserval)
②廣度優先遍歷(Width-First Traserval)
(3)JDOM(Java-based Document Object Model)
Java特定的文檔對象模型。自身不包含解析器,使用SAX
【優點】
①使用具體類而不是介面,簡化了DOM的API。
②大量使用了Java集合類,方便了Java開發人員。
【缺點】
①沒有較好的靈活性。
②性能較差。
(4)DOM4J(Document Object Model for Java)
簡單易用,採用Java集合框架,並完全支持DOM、SAX和JAXP
【優點】
①大量使用了Java集合類,方便Java開發人員,同時提供一些提高性能的替代方法。
②支持XPath。
③有很好的性能。
【缺點】
①大量使用了介面,API較為復雜。
(5)StAX(Streaming API for XML)
流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持,JDK1.6新特性
【和推式解析相比的優點】
①在拉式解析中,事件是由解析應用產生的,因此拉式解析中向客戶端提供的是解析規則,而不是解析器。
②同推式解析相比,拉式解析的代碼更簡單,而且不用那麼多庫。
③拉式解析客戶端能夠一次讀取多個XML文件。
④拉式解析允許你過濾XML文件和跳過解析事件。
【簡介】
StAX API的實現是使用了Java Web服務開發(JWSDP)1.6,並結合了Sun Java流式XML分析器(SJSXP)-它位於
javax.xml.stream包中。XMLStreamReader介面用於分析一個XML文檔,而XMLStreamWriter介面用於生成一個
XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的游標機制
形成對照。

Ⅸ 如何用java生成一個xml文件

一個XML文檔,可以先構造一個DOM,然後將DOM轉化為xml序列,輸出或者生成文件。package test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Test {

public static void generate(){
try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
document.setXmlVersion("1.0");
document.setXmlStandalone(true);

Element root = document.createElement_x("MobileNet"); //創建根節點
document.appendChild(root); //將根節點添加到Document對象中

Element pageElement = document.createElement_x("page"); //設置第一個page元素到
pageElement.setAttribute("name", "list.jsp"); //設置page節點的name屬性

Element methodElement = document.createElement_x("method"); //設置method節點
methodElement.setTextContent("get"); //給method設置值
pageElement.appendChild(methodElement); //添加method節點到page節點內

Element displayElement = document.createElement_x("display"); //設置method節點
displayElement.setTextContent("list撒旦發放"); //給display設置值
pageElement.appendChild(displayElement); //添加display節點到page節點內

Element request_paramElement = document.createElement_x("request_param");
request_paramElement.setTextContent("request_param1|request_param2");
pageElement.appendChild(request_paramElement);

root.appendChild(pageElement);
pageElement = document.createElement_x("page"); //設置第二個page元素到
pageElement.setAttribute("name", "content.jsp"); //設置page節點的name屬性

methodElement = document.createElement_x("method");
methodElement.setTextContent("post");

pageElement.appendChild(methodElement);
displayElement = document.createElement_x("display");
displayElement.setTextContent("content");

pageElement.appendChild(displayElement);

Element url_titleElement = document.createElement_x("url_title"); //設置url_title節點
url_titleElement.setTextContent("title,publisher,published_calendar"); //給url_title設置值
pageElement.appendChild(url_titleElement); //添加url_title節點到page節點內

root.appendChild(pageElement); //將page段加人根節點內

TransformerFactory transFactory = TransformerFactory.newInstance(); //開始把Document映射到文件
Transformer transFormer = transFactory.newTransformer();

DOMSource domSource = new DOMSource(document); //設置輸出結果

File file = new File("MobileNetRule.xml"); //生成xml文件

if (!file.exists()) {
file.createNewFile();
}

FileOutputStream out = new FileOutputStream(file); //文件輸出流
StreamResult xmlResult = new StreamResult(out); //設置輸入源

transFormer.transform(domSource, xmlResult); //輸出xml文件
System.out.println(file.getAbsolutePath()); //測試文件輸出的路徑

TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty("{/encoding/}","GB2312/");
ByteArrayOutputStream boc = new ByteArrayOutputStream();
t.transform(new DOMSource(document), new StreamResult(boc));
String xmlstring = boc.toString();
System.out.println(xmlstring);

} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args){
Test.generate();

}
}

閱讀全文

與documentxmljava相關的資料

熱點內容
如何在伺服器上配置外網網址 瀏覽:838
阿里雲伺服器的硬體在哪裡 瀏覽:52
python自動注冊谷歌 瀏覽:329
phpini驗證碼 瀏覽:824
解壓後的文件怎麼驅動 瀏覽:326
老闆要程序員加班 瀏覽:414
泰爾pdf 瀏覽:311
視頻轉碼壓縮哪款軟體好 瀏覽:647
盯盯拍記錄儀下載什麼app 瀏覽:436
新東方新概念英語pdf 瀏覽:696
python中如何創建菜單欄 瀏覽:507
中石化app那個叫什麼名 瀏覽:706
借貸寶合集解壓密碼 瀏覽:640
python爬取網頁代碼 瀏覽:480
efs加密對微信無效 瀏覽:496
劉秀pdf 瀏覽:998
腳上長黑刺是什麼app 瀏覽:703
演算法工程師上海 瀏覽:390
php的循環語句怎麼寫 瀏覽:289
畫聖誕樹用什麼軟體python 瀏覽:452