首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java 解析XML,修改XML,

2013-07-04 
java 解析XML,修改XML,求助。。。param namename1 valuevalue1/param namename2 valuevalue2/

java 解析XML,修改XML,求助。。。
<param name="name1" value="value1"/>
<param name="name2" value="value2"/>
<param name="name3" value="value3"/>
<param name="name4" value="value4"/>
<param name="name5" value="value5"/>

我有一个XML格式是这样的,

怎么实现根据name修改value的值?

我试了下用Node,取不到name和value的值.......

XML 解析 修改 Java
[解决办法]
代码需要导入dom4j.jar


    public static void main(String[] args)
    {
        //修改条件和修改的值
        final String nameStr = "name2";
        final String valueStr = "value222";
        
        File xmlFile = new File("D:\\java\\test_java\\someXML.xml");
        SAXReader reader = new SAXReader();
        
        XMLWriter output = null;
        InputStream isr = null;
        
        try
        {
          //定义文件输入流
            isr = new FileInputStream(xmlFile);

            //以UTF-8的编码方式读取配置文件
            Document document = reader.read(new InputStreamReader(isr, "UTF-8"));
            //Document document = reader.read(xmlFile);
            Element root = document.getRootElement();


            List<?> nodes = root.elements("param");
            //遍历
            for (final Iterator<?> iterator = nodes.iterator(); iterator.hasNext();)
            {
                Element elm = (Element) iterator.next();
                String attName = elm.attribute("name").getValue();
                if(nameStr.equals(attName))
                {
                    elm.setAttributeValue("value", valueStr);
                }
            }
            OutputFormat format = new OutputFormat(null, false, "UTF-8");
            output = new XMLWriter(new FileOutputStream(xmlFile), format);
            output.write(document);
        }
        catch (DocumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (UnsupportedEncodingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block


            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {
          //关闭输入流
            if (null != isr)
            {
                try
                {
                    isr.close();
                }
                catch (Exception e)
                {
                    System.out.println(" close InputStream failure .\n" + e);
                }
            }

            //关闭写文件资源
            if (null != output)
            {
                try
                {
                    output.close();
                }
                catch (Exception e)
                {
                    System.out.println(" close XMLWriter failure .\n" + e);


                }
            }
        }
    }



someXML.xml文件放指定路径下,内容:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<param name="name1" value="value1"/>
<param name="name2" value="value2"/>
<param name="name3" value="value3"/>
<param name="name4" value="value4"/>
<param name="name5" value="value5"/>
</root>

热点排行