導航:首頁 > 編程語言 > java編輯xml

java編輯xml

發布時間:2023-05-11 17:55:15

java操作xml

document = DocumentHelper.parseText(infoXML);
Element root = document.getRootElement(); //根節點
Iterator it =root.elements().iterator();
while(it.hasNext()){
........................
}
然後循環的去獲取你自定義的節點名茄談哪稱獲得相應的值。
這是DOM方法
網路不允許發顫碼代侍枝碼,如果有不懂的可以HI我!

❷ 使用java如何修改某個xml文件中的某項內容

代碼如下:

import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;
import java.io.*;
public class xml{
public void toXml() throws JDOMException,IOException{
SAXBuilder saxBuilder=new SAXBuilder(false);
saxBuilder.setExpandEntities(false);
File file = new File("c:\\test.xml");
Document doc =saxBuilder.build(new File("c:\\test.xml"));
Element elem=doc.getRootElement();
//System.out.println(elem.toString());
elem.getChild("Collectors").getChild("Collector"手握).getAttribute("敗茄HostIP").setValue("192.168.0.1");
elem.getChild("Collectors").getChild("Collector").getAttribute("PortID").setValue("100000");
Element elem1 = (Element)elem.clone();

Document Doc=new Document(elem1);
XMLOutputter XMLOut = new XMLOutputter();
XMLOut.setEncoding("畢枯慶BIG5");
XMLOut.setNewlines(true);
file.delete();
XMLOut.output(Doc,new FileOutputStream("c:\\test"+".xml"));
}
public static void main(String args[]){

xml x = new xml();
try{
x.toXml();
}catch(Exception e){}
}
}

❸ 如何利用Java語言進行XML編程

為了簡化編寫處理 XML 的 Java 程序,已經建立了多種編程介面。這些介面或者由公司定義,或者由標准體或用戶組定義,以滿足 XML 程序員的需要。本教程將討論以下介面:

Document Object Model (DOM,文檔對象模型),Level 2

Simple API for XML (SAX), Version 2.0

JDOM, Jason Hunter 和 Brett McLaughlin 創立的一種簡單 Java API

Java API for XML Processing (JAXP)

這四種介面中前三個(DOM、SAX
和 JDOM)定義了如何訪問與表示 XML 文檔的內容。JAXP 包含創建解析器對象的類。要創建 DOM 或 SAX 解析器,您需要使用
JAXP。如果使用 JDOM,JDOM 庫將在幕後使用 JAXP 為您創建一個解析器。總之:

使用 DOM、SAX 或 JDOM 處理 XML 文檔的內容。

如果使用 DOM 或 SAX,則使用 JAXP 創建解析器。

如果使用 JDOM,則 JDOM 庫為您創建解析器。

我將考察上述每種 API 的設計目標、長處和缺點,同時還涉及到一點它們的歷史以及創建這些 API 的標准體。
關於例子

本教程中包含多個使用 DOM、SAX 和 JDOM API 的示常式序。所有這些程序都使用 XML 標記的莎士比亞十四行詩。十四行詩的結構如下:
<sonnet>
<author>
<lastName>
<firstName>
<nationality>
<yearOfBirth>
<yearOfDeath>
</author>
<lines>
[14 <line> elements]
</lines>
</sonnet>
設置機器
在運行這些例子之前,需要對您的機器作一些設置。
(假設您知道如何編譯和運行 Java 程序,並了解如何設置 CLASSPATH變數。)
首先請訪問 Apache XML Project (http://xml.apache.org/xerces2-j/) 上的 Xerces XML 解析器主頁。
您也可以直接去 下載頁面 (http://xml.apache.org/xerces2-j/download.cgi)。
解壓從 Apache 下載的文件。根據解析器版本的不同,這樣將會創建名為 xerces-2_5_0或者類似名稱的目錄。
所需要的 JAR 文件(xercesImpl.jar和xml-apis.jar)應該出現在 Xerces 根目錄下。
訪問 JDOM 項目站點 並下載最新版本的 JDOM (http://jdom.org/)。
解壓從 JDOM 下載的文件,這樣將建立名為 jdom-b9或者旅毀類似名稱的目錄。
所需要的 JAR 文件(jdom.jar)應該在build目錄中。
最後請下載本教程的示例壓縮文件 ,並解壓該文件。
把當前目錄 (.)、xercesImpl.jar、xml-apis.jar和jdom.jar添加到CLASSPATH變數中。

基礎
XML 解析器是讀取 XML 文檔並分析其結構的一段代碼。這一部分將介紹 XML 解析器是如何工作的。
我將討論不同類型的 XML 解析器以及何時使用它們。
本教程後面的章節將討論如何創建解析羨和器以及如何處理解析器給出的結果。
如何使用解析器
我將在後面的章節對此詳細討論,一般而言使用解析器需要以下步驟:
創建一個解析器對象
使解析器指向您的 XML 文檔
處理結果
顯然第三步最為復雜。一旦知道了 XML 文檔的內容,比方說,您可能希望生成一個 Web 頁面、創建一個訂單或者做一個餅圖。
考慮到 XML 文檔所含數據的兄鎮盯多樣性,編寫一個應用程序處理所有可能的輸入是一項艱巨的任務。
所幸的是,這里討論的常見 XML 解析工具使這項工作大大簡化了。

❹ java修改XMl文件,請高手指點

樓主這個思路遲並是沒有什麼問題的,存入map中可以方便整個項目使用,特別是針對那些項目悉配中經常要讀取的xml,可以使用碼陸跡xpath
public static void modifyXMLFile(String name,String value) {
String oldStr = "E:/Work/Proj/gfweb/src/configuration.xml";
String newStr = "E:/Work/Proj/gfweb/src/configuration.xml";
Document document = null;
try {
SAXReader saxReader = new SAXReader(); // 用來讀取xml文檔
saxReader.setEncoding("GBK");
document = saxReader.read(new File(oldStr)); // 讀取xml文檔
List list = document.selectNodes("/system/category/item");// 用xpath查找節點book的屬性
Iterator iter = list.iterator();
while (iter.hasNext()) {
Element element = (Element) iter.next();
//Attribute attribute = (Attribute) iter.next();
String itemname = element.attributeValue("name");
if(name.equals(itemname)){
element.setAttributeValue("value",value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
OutputFormat outFmt = OutputFormat.createPrettyPrint();
outFmt.setEncoding("GBK");
outFmt.setIndent(true);
XMLWriter writer = new XMLWriter(new FileWriter(new File(newStr)),outFmt);
writer.write(document);
writer.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

❺ JAVA如何寫XML文件

import java.io.*;

import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class DOM4JTest {
public static void main(String[] args) {
Document doc = DocumentHelper.createDocument();
doc.addProcessingInstruction("xml-stylesheet", "type='text/xsl href='students.xsl'");
Element root = doc.addElement("students");

Element eltStu1 = root.addElement("student").addAttribute("sn", "01");
Element eltName1 = eltStu1.addElement("name");
Element eltAge1 = eltStu1.addElement("age");
eltName1.setText("張三");
eltAge1.setText("20");

Element eltStu2 = root.addElement("student").addAttribute("sn", "02");
Element eltName2 = eltStu2.addElement("name");
Element eltAge2 = eltStu2.addElement("age");
eltName2.setText("李四");
eltAge2.setText("18");

try {
OutputFormat format = new OutputFormat("
", true);
format.setEncoding("gb2312");
// 可以把System.out改為你要的流。
XMLWriter xmlWriter = new XMLWriter(new PrintWriter(System.out), format);
xmlWriter.write(doc);
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

❻ XML文件的java有哪些操作

共有4重,分別是:DOM、SAX、JDOM 、DOM4J
1)DOM(JAXP Crimson解析器)
DOM是用於平台和語言無關的方式表示XML文檔的官方W3C標准。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找特定信息。分析該結構通常需要載入整個文檔和構造層次結構,然後才能做任何工作。由於它是基於信息層次的,因而DOM被認為是基於樹或基於對象的。DOM以及廣義的基於樹的處理具有幾個優點。首先,由於樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。
2)SAX
SAX處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。
選擇DOM還是選擇SAX? 對於需要自己編寫代碼來處理XML文檔的開發人員來說, 選擇DOM還是SAX解析模型是一個非常重要的設計決策。 DOM採用建立樹形結構的方式訪問XML文檔,而SAX採用的事件模型。
DOM解析器把XML文檔轉化為一個包含其內容的樹,並可以對樹進行遍歷。用DOM解析模型的優點是編程容易,開發人員只需要調用建樹的指令,然後利用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由於使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由於它的遍歷能力,DOM解析器常用於XML文檔需要頻繁的改變的服務中。
SAX解析器採用了基於事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag.特別是當閉虧侍開發人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。
3)JDOM
JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快。由於是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過「Java規范請求JSR-102」將它最終用作「Java標准擴展」。從2000年初就已經開始了JDOM開發。
JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用介面。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些轎吵類的Java開發者的使用。
JDOM文檔聲明其目的是「使用20%(或更少)的精力解決80%(或更多)Java/XML問題」(根據學習曲線假定為20%)。JDOM對於大多數Java/XML應用程序來說當然是有用的,並且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM介面都更有意義的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼
4)DOM4J
雖然DOM4J代表了完全獨立的開發結果,但最初,它是JDOM的一種智能分支。它合並了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用於大文檔或流化文檔的基於事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J API和標准DOM介面具有並行訪問功能。從2000下半年開始,它就一直處於開發之中。
為空掘支持所有這些功能,DOM4J使用介面和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。
在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發者的易用性和直觀操作。它還致力於成為比JDOM更完整的解決方案,實現在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。
DOM4J是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟體。如今你可以看到越來越多的Java軟體都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J.

❼ java修改XMl文件,請高手指點

public interface INode {
public StringBuffer toXmlFile();
public StringBuffer toTxtFile(String last);
}

import java.util.ArrayList;
import java.util.List;
public class XmlNode implements INode {
private String key = null;
private String value = null;
private List NodeList= new ArrayList();
public void addNode(XmlNode tNodeList){
if(tNodeList != null){
NodeList.add(tNodeList);
}
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public StringBuffer toTxtFile(String last) {
// TODO Auto-generated method stub
StringBuffer sb = new StringBuffer();
String tmp = (last == null?"":last+"亮裂.") + key;
sb.append(tmp);
sb.append("=");
sb.append(value == null?"":value);
sb.append("\r\n");
int len = this.NodeList.size();
for(int i = 0; i < len ;i++)
sb.append(((XmlNode)NodeList.get(i)).toTxtFile(tmp));
return sb;
}
public StringBuffer toXmlFile() {
// TODO Auto-generated method stub
StringBuffer sb = new StringBuffer();
sb.append("族李<"+key+">");
sb.append(value ==null?"":value);
int len = this.NodeList.size();
for(int i = 0; i < len ;i++)
sb.append(((XmlNode)NodeList.get(i)).toXmlFile());
sb.append("</"+key+">");
return sb;
}
}

//測試

public class xmltester {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
XmlNode root = new XmlNode();
root.setKey("root");

XmlNode person = new XmlNode();
person.setKey("person");

XmlNode name = new XmlNode();
name.setKey("name");
name.setValue("張三");

person.addNode(name);

XmlNode age = new XmlNode();
age.setKey("age");
age.setValue("12");

person.addNode(age);

root.addNode(person);

System.out.println("txt file = \兆鍵遲r\n " + root.toTxtFile(""));
System.out.println("xml file = \r\n" + root.toXmlFile());

}

}

//測試結果

txt file =
.root=
.root.person=
.root.person.name=張三
.root.person.age=12

xml file =
<root><person><name>張三</name><age>12</age></person></root>

❽ 通過java怎麼配置xml文件

JAVA與XML文件,可以說是軟體開發的「黃金搭檔」,而如何使用JAVA完成對XML文件的讀取,是我們首先要解決的問題。
一、XML文件

這個示例文件包括了用來打開ORACLE資料庫的各種參數

<?xml version="1.0" encoding="UTF-8"?>
<dbmsg>
<dbinfo>
<drivername>oracle.jdbc.driver.OracleDriver</drivername>
<sConnStr>jdbc:oracle:thin:@11.88.225.80:1521:VOUCHERDB</sConnStr>
<username>SYS AS SYSDBA</username>
<password>voucherdb</password>
</dbinfo>
</dbmsg>

二、編寫類名為ReadXml的類,用於解析XML文件

我們要在應用程序中打開資料庫,就必須完成對該文件中drivername、sConnStr、username、password的讀取,通過查找有關資料,筆者編制了以下程序,用於讀取文件名為filename的XML文件。

package voucher.basic;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ReadXml {
private String drivername;
private String sConnStr;
private String username;
private String password;

public String getDrivername() {
return drivername;
}

public String getSConnStr() {
return sConnStr;
}

public String getUsername() {
return username;
}

public String getPassword() {
return password;
}
public void setDrivername(String drivername) {
this.drivername = drivername;
}

public void setSConnStr(String connStr) {
sConnStr = connStr;
}

public void setUsername(String username) {
this.username = username;
}

public void setPassword(String password) {
this.password = password;
}

public ReadXml(String fileName){
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
InputStream is=new FileInputStream(fileName);
Document doc=dombuilder.parse(is);
Element root=doc.getDocumentElement();
NodeList dbinfo=root.getChildNodes();
if(dbinfo!=null){
for(int i=0;i<dbinfo.getLength();i++){
Node db=dbinfo.item(i);
for(Node node=db.getFirstChild();node!=null;node=node.getNextSibling()){
if(node.getNodeType()==Node.ELEMENT_NODE){
if(node.getNodeName().equals("drivername")){
setDrivername(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("sConnStr")){
setSConnStr(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("username")){
setUsername(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("password")){
setPassword(node.getFirstChild().getNodeValue());
}
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

這個以ReadXml命名的類,使用了參數為文件名的構造方法,用戶只要將配置文件我名稱傳遞給該方法,就可以完成對XML文件的解析,進而完成對相應參數數的讀取。三、如何獲取XML文件全路徑並讀取配置參數

獲取XML文件全路徑的方法有兩個,一是在servlet中獲取,二是在單獨的JAVA類中獲取。

1.在servlet中獲取XML文件的全路徑並讀取配置參數

程序片段String dirPath = getServletContext().getRealPath( "/WEB-INF");
String fileName = dirPath + "/conn.xml";
ReadXml xm = new ReadXml(fileName);
String DriverName = xm.getDrivername();
String connStr = xm.getSConnStr();
String user = xm.getUsername();
String pas = xm.getPassword();

將這段程序添加到servlet中dopost()之後即可完成參數的讀取

2.在單獨的JAVA類中獲取全路徑並讀取配置參數

程序片段String dirpath = System.getProperty("user.dir");
String xmlFile = dirpath + "/WebRoot/WEB-INF/conn.xml";
ReadXml rdxml = new ReadXml(xmlFile);
String driverName = rdxml.getDrivername();
String sConnStr = rdxml.getSConnStr();
String userName = rdxml.getUsername();
String passWord = rdxml.getPassword();註:配置文件conn.xml保存在webroot/WEB-INF目錄中。

❾ JAVA如何寫XML文件

呵呵,你這個問題,其實寫XML很簡單的,氛圍以下幾步:
1.導入DOM4J包,在此我使用dom4j來做。
2.創建dom4j的實例:Document document = DocumentHelper.createDocument();
3.一級一級的添加節點或者屬性,這個具體參照dom4j幫助:
Element rootGen = document.addElement("root");
4.定義以下3個對象,然後進行操作:
Writer writer = null;
OutputFormat format = null;
XMLWriter xmlwriter = null;

***********************************************************************************
附上代碼:
public void CreateXMl(StudentBean sn){
//創建document對象
Document document = DocumentHelper.createDocument();
//定義根節點Element
Element rootGen = document.addElement("root");
//定義根節點ROOT的子節點們
Element nameGen = rootGen.addElement("Name");
nameGen.addAttribute("name", "我是中文");
Element ageGen = rootGen.addElement("Age");
Element addrGen = rootGen.addElement("Address");
Writer writer = null;
OutputFormat format = null;
XMLWriter xmlwriter = null;
//將定義好的內容寫入xml文件中
try {
//使用這個writer也可以,只不過遇到中文會亂碼哦
// writer = new FileWriter("d:/test.xml");
//進行格式化
format = OutputFormat.createPrettyPrint();
//設定編碼
format.setEncoding("UTF-8");
xmlwriter = new XMLWriter(new FileOutputStream("d:/test.xml"), format);
xmlwriter.write(document);
xmlwriter.flush();
xmlwriter.close();
System.out.println("-----------Xmlfile successfully created-------------");
} catch (Exception e) {
e.printStackTrace();
System.out.println("-----------Exception occured ring of create xmlfile -------");
}
}

閱讀全文

與java編輯xml相關的資料

熱點內容
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:737
方舟編譯器現在可提速哪些軟體 瀏覽:58
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:602
蘋果13如何加密視頻 瀏覽:813
linuxweblogic緩存 瀏覽:67
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:530
與伺服器連接斷開如何處理 瀏覽:833
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:41
python九乘法表怎麼編寫 瀏覽:974
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:941
央視網下載加密 瀏覽:455
命令行訪問伺服器 瀏覽:37