java操作修改XML org.w3c.dom

修改XML怎么在源XML中没有起作用那??
XML文件是:
<?xml version="1.0" encoding="gbk"?>
<values>
<value>zh</value>
</values>


java代码是这样的:
package com.xaut.wangwuyi.tts.util;
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class ReadXmlResource
{

public  String getI18Xml() 
{
String values ="";
try 
{
File f = new File("resource.xml");
//InputStream is = getClass().getClassLoader().getResourceAsStream("message_"+i18+".properties");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("values");
for (int i = 0; i < nl.getLength(); i++) 
{
values = doc.getElementsByTagName("value").item(i).getFirstChild().getNodeValue();
}

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

/**
 * 这种方式源文件没改动
 * @param language
 */
public  void setI18Xml2(String language) 
{
try 
{
File f = new File("resource.xml");
//InputStream is = getClass().getClassLoader().getResourceAsStream("message_"+i18+".properties");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("values");
for (int i = 0; i < nl.getLength(); i++) 
{
 doc.getElementsByTagName("value").item(i).getFirstChild().setNodeValue(language);
}

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

/**
 * 这种方式源文件没改动
 * @param language
 */
public  void setI18NXml(String language) 
{

try 
{
File f = new File("resource.xml");
//InputStream is = getClass().getClassLoader().getResourceAsStream("message_"+i18+".properties");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
Element root = doc.getDocumentElement();
Element theBook=(Element) selectSingleNode("/values", root);
theBook.getElementsByTagName("value").item(0).setTextContent(language);

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

}

public static Node selectSingleNode(String express, Object source){//查找节点,并返回第一个符合条件节点
        Node result=null;
        XPathFactory xpathFactory=XPathFactory.newInstance();
        XPath xpath=xpathFactory.newXPath();
        try {
            result=(Node) xpath.evaluate(express, source, XPathConstants.NODE);
        } catch (XPathExpressionException e) {
            e.printStackTrace();
        }
       
        return result;
    }


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

ReadXmlResource g = new ReadXmlResource();
System.out.println(123);
g.setI18NXml("en");
System.out.println("dsfa " + g.getI18Xml());
}



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值