日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java对xml文件的读写_java 自己做的对XML文件的读写操作

發(fā)布時間:2025/3/20 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java对xml文件的读写_java 自己做的对XML文件的读写操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

XML文件實例:

WEB-INF/web.xml

type="javax.sql.DataSource" />

type="javax.sql.DataSource" />

Java類:

import java.io.File;

import java.util.HashMap;

import java.util.Map;

import javax.imageio.metadata.IIOMetadataNode;

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.Attr;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import com.sun.org.apache.xerces.internal.dom.AttrNSImpl;

import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultNode;

public class T2 {

/**

* 將修改的內(nèi)容添加到xml文件中

*

* @param document

* @param filename

* @return

*/

public static boolean doc2XmlFile(Document document, String filename) {

boolean flag = true;

try {

/** 將document中的內(nèi)容寫入文件中 */

TransformerFactory tFactory = TransformerFactory.newInstance();

Transformer transformer = tFactory.newTransformer();

/** 編碼 */

//transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");

DOMSource source = new DOMSource(document);

//判斷路徑開頭有沒有“/”如果有則去掉

filename = "C".equals(filename.charAt(0)) ? filename : filename.substring(1);

StreamResult result = new StreamResult(new FileOutputStream(filename));

transformer.transform(source, result);

} catch (Exception ex) {

flag = false;

ex.printStackTrace();

}

return flag;

}

/**

* 讀取xml文件

*

* @param filename

* @return

*/

public static Document load(String filename) {

Document document = null;

try {

factory = DocumentBuilderFactory.newInstance();

builder = factory.newDocumentBuilder();

//判斷路徑開頭有沒有“/”如果有則去掉

filename = "C".equals(filename.charAt(0)) ? filename : filename.substring(1);

document = builder.parse(new FileInputStream(filename));

document.normalize();

} catch (Exception ex) {

ex.printStackTrace();

logger.error("找不到文件!");

}

return document;

}

/**

* 演示修改文件的具體某個節(jié)點的值

*/

public static void xmlUpdateDemo() {

Document document = load("c://Message.xml");

Node root = document.getDocumentElement();

/** 如果root有子元素 */

if (root.hasChildNodes()) {

/** ftpnodes */

NodeList ftpnodes = root.getChildNodes();

/** 循環(huán)取得ftp所有節(jié)點 */

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);

//修改節(jié)點的值

if (subnode.getNodeType() == Node.ELEMENT_NODE

&& subnode.getNodeName() == "status") {

subnode.getFirstChild().setNodeValue("1");

}

}

}

}

doc2XmlFile(document, "c://Message.xml");

}

/**

* 演示修改文件的具體某個節(jié)點的屬性

*/

public static void xmlUpdateDemoAttri() {

Document document = load("c://xx.xml");

Node root = document.getDocumentElement();

/** 如果root有子元素 */

if (root.hasChildNodes()) {

/** ftpnodes 根節(jié)點的子節(jié)點 */

NodeList ftpnodes = root.getChildNodes();

/** 循環(huán)取得第一層子節(jié)點所有節(jié)點 */

for (int i = 0; i < ftpnodes.getLength(); i++) {

Node subnode = ftpnodes.item(i);

//添加或修改某節(jié)點的屬性配置

if ("Resource".equals(subnode.getNodeName())) {

// 生成一個屬性對象

Attr attr = document.createAttribute("ss");

attr.setValue("ssss");

subnode.getAttributes().setNamedItem(attr);

}

}

}

// 將修改的內(nèi)容添加到xml文件中

doc2XmlFile(document, "c://xx.xml");

}

/**添加新的節(jié)點

* 根節(jié)點下沒有節(jié)點的話直接添加

* 根節(jié)點下沒有重名的直接添加

* 有重名的節(jié)點則更新節(jié)點屬性

* @param nodeName 添加、更新的節(jié)點名

* @param attr 屬性集合

*/

public static void xmlAddDemoAttri(String filePath,String nodeName,Map attr) {

Document document = load(filePath);

Node root = document.getDocumentElement();

//創(chuàng)建節(jié)點元素,并命名

Element element =document.createElement(nodeName);

//向節(jié)點中添加屬性

for (Object key : attr.keySet().toArray()) {

element.setAttribute(key.toString(), attr.get(key));

}

//找到根節(jié)點

NodeList nodeList = document.getElementsByTagName("Context");

//先判斷根節(jié)點下有沒有子節(jié)點,沒有的話直接添加

Node rootNode = nodeList.item(0);

if(!root.hasChildNodes()){

nodeList.item(0).appendChild(element);

}else{

//如果有重復的節(jié)點,flag=true;

boolean flag = false;

NodeList rootChs = rootNode.getChildNodes();

//循環(huán)根節(jié)點下的所有子節(jié)點

for (int i = 0; i < rootChs.getLength(); i++) {

Node node = rootChs.item(i);

//如果沒有重名,并且是最后一個節(jié)點的就添加

if(!nodeName.equals(node.getNodeName()) && !flag && (i+1) == rootChs.getLength()){

nodeList.item(0).appendChild(element);

}else if(nodeName.equals(node.getNodeName())){

//有重名的就看name屬性,name一樣就修改屬性

if(node.hasAttributes()){

//如果有屬性項,判斷name屬性值,如果name的值相同,則修改其他屬性

if(null != node.getAttributes().getNamedItem("name") && attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue())){

// 生成一個屬性對象

Attr chAttr = null;

//向節(jié)點中添加屬性

for (Object key : attr.keySet().toArray()) {

//不更新name屬性

if(!"name".equals(key.toString())){

chAttr = document.createAttribute(key.toString());

chAttr.setValue(attr.get(key));

}

}

node.getAttributes().setNamedItem(chAttr);

}else if(null != node.getAttributes().getNamedItem("name") && !attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue()) && !flag && (i+1) == rootChs.getLength()){

//如果name的值不相同,且都沒有相同的節(jié)點,添加新的節(jié)點

System.out.println(attr.get("name"));

System.out.println(node.getAttributes().getNamedItem("name").getNodeValue());

nodeList.item(0).appendChild(element);

}

}

}

}

}

// 將修改的內(nèi)容添加到xml文件中

doc2XmlFile(document, filePath);

}

public static void main(String args[]) throws Exception {

Map att = new HashMap();

att.put("as", "mmmmmmmmmmmmm");

att.put("name", "jdbc/sqlserver-database");

xmlAddDemoAttri("c://context.xml","Resource",att);

}

}

總結(jié)

以上是生活随笔為你收集整理的java对xml文件的读写_java 自己做的对XML文件的读写操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 好吊操视频这里只有精品 | 国产又爽又黄免费视频 | 四季av日韩精品一区 | 免费黄色a | 国产女人毛片 | 激情网站在线观看 | 久久偷看各类女兵18女厕嘘嘘 | 老司机精品视频在线播放 | 日本特黄一级片 | 性久久久久| sese在线| 欧美日韩一区二区综合 | 欧美精品欧美极品欧美激情 | 网友自拍视频 | 欧美日韩在线视频免费观看 | 欧美特一级 | 日韩精品一区二区三区视频在线观看 | 精品一区二区免费 | 视频区图片区小说区 | 美女扒开大腿让男人桶 | 可以免费看污视频的网站 | 午夜天堂影院 | 91久久综合亚洲鲁鲁五月天 | 无码人妻精品中文字幕 | av在线资源播放 | 黄色av观看| 欧美视频久久 | 成人免费看片入口 | 青青草社区 | 免费中文字幕日韩欧美 | 日韩www. | 自慰无码一区二区三区 | 国内自拍偷拍视频 | 美女扒开尿口让男人爽 | 欧美又大又硬又粗bbbbb | 色开心 | 伊人射| 极品美女高潮出白浆 | 一级特黄免费视频 | 69av网站| 国产精品日韩欧美 | 青青青青在线 | 伊人久久五月 | 亚洲不卡在线观看 | 天天色天天搞 | 亚洲一区二区三区电影在线观看 | 国产欧美一区二区三区在线 | 国产精品伊人久久 | 久一在线 | 亚洲午夜无码av毛片久久 | 国产一区网| 五月激情网站 | 男女做那个的全过程 | 麻豆md0049免费 | 制服丝袜在线第一页 | 天天躁夜夜躁狠狠是什么心态 | 日韩一区二区三区四区在线 | 国产精品无码免费专区午夜 | 亚洲激情av在线 | 美女精品一区 | 久久精品无码一区二区三区免费 | 中文成人无字幕乱码精品区 | 91片黄在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 张柏芝54张无删码视频 | 国产又黄又嫩又滑又白 | 日韩欧美一二三四区 | 91在线资源 | 星空无限mv国产剧入选 | 亚洲欧美在线视频 | 亚洲精品91天天久久人人 | 制中文字幕音影 | 男人天堂导航 | 理论片高清免费理伦片 | 性高跟鞋xxxxhd人妖 | 少妇高潮一区二区三区99欧美 | xxxx18日本 | 久久99热人妻偷产国产 | 国产又大又长又粗 | 99久久亚洲精品 | 性色av一区二区三区免费 | av片久久 | 欧美精品色视频 | 久久久久久午夜 | 国模一区二区三区 | 午夜成人亚洲理伦片在线观看 | 久久久福利| 欧美无吗| 国内精品视频在线 | 成人免费视 | 爱草av | 自由成熟xxxx色视频 | 精品国产一级久久 | 国产91免费看| 特黄网站 | 亚洲 美腿 欧美 偷拍 | 超碰公开在线观看 | 国产精品福利导航 | 一区欧美 |