java 修改xml属性,java修改XML文件节点的属性输出文件有关问题

java修改XML文件节点的属性输出文件问题

输出文件时,属性的值没有发生改变

String src = request.getSession().getServletContext().getRealPath(

"/");

File file = new File(src + "xml/scene.xml");

SAXReader sax = new SAXReader();

Document document = sax.read(file);

Element root = document.getRootElement();

Element returnHome = root.element("returnHome");

Element lightin = returnHome.element("lighting");

System.out.println(lightin);

boolean flag=false;

for (Iterator it = lightin.elementIterator(); it.hasNext();) {

Element element = (Element) it.next();

System.out.println(element.attribute("value").getValue());

System.out.println(element.attribute("status").getValue());

if ("lighiting1".equals(element.attributeValue("value"))) {

element.attribute("status").setValue("1");

flag=true;

continue;

}

}

if (flag) {

StringWriter writer = new StringWriter();

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("utf-8");

XMLWriter xmlwriter = new XMLWriter(writer, format);

xmlwriter.write(document);

writer.flush();

xmlwriter.flush();

writer.close();

xmlwriter.close();

}

} catch (DocumentException e) {

e.printStackTrace();

}

作修改之后 的代码为:

try {

String src = request.getSession().getServletContext().getRealPath(

"/");

String path=src + "xml/scene.xml";

File file = new File(src + "xml/scene.xml");

SAXReader sax = new SAXReader();

Document document = sax.read(file);

Element root = document.getRootElement();

Element returnHome = root.element("returnHome");

Element lightin = returnHome.element("lighting");

System.out.println(lightin);

//String[] lighting = request.getParameterValues("lighting");

//String[] curtain = request.getParameterValues("curtain");

boolean flag=false;

for (Iterator it = lightin.elementIterator(); it.hasNext();) {

Element element = (Element) it.next();

System.out.println(element.attribute("value").getValue());

System.out.println(element.attribute("status").getValue());

if ("lighiting1".equals(element.attributeValue("value"))) {

element.attribute("status").setValue("1");

element.attribute("name").setValue("XXXXXXXXXXX");

flag=true;

//closeAction();

continue;

}

}

if (flag) {

FileWriter writer = new FileWriter(path);

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("utf-8");

XMLWriter xmlwriter = new XMLWriter(writer, format);

xmlwriter.write(document);

writer.flush();

xmlwriter.flush();

writer.close();

xmlwriter.close();

// FileWriter out = new FileWriter(filename);

// document.write(out);

// out.flush();

// out.close();

}

} catch (DocumentException e) {

e.printStackTrace();

}

原因:

在输入新文件的时候,应该指定文件的路径.

如果需要源码可以发送邮件到sdiwen1982@sohu.com索取 /*************************************** 功能:读取xml文件 参数:[in] xml文件路径 返回:true读取成功 false读取失败 **************************************/ bool ReadXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:写入xml文件 参数:[in] xml文件路径 返回:true写入成功 false写入失败 **************************************/ bool WriteXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:释放空间 参数:无 返回:无 **************************************/ void Release(); /*************************************** 功能:删除指定的节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteNode(); /*************************************** 功能:删除当前节点的所有子节点,当前节点不删除 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllSon(); /*************************************** 功能:根据索引删除子节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteSonByIndex(unsigned int nIndex); /*************************************** 功能:删除节点所有属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllAttr(); /*************************************** 功能:根据属性名删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByName(CString sName); /*************************************** 功能:根据索引删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByIndex(unsigned int nIndex); /*************************************** 功能:根据属性名设置属性值 参数:[in] sName 属性名 [in] sValue 属性值 返回:true设置成功 false设置失败 **************************************/ bool SetAttrValueByName(CString sName, CString sValue); /*************************************** 功能:插入属性 参数:[in] sName 属性名 [in] sValue 属性值 返回:true插入成功 false插入失败 **************************************/ bool InsertAttr(CString sName, CString sValue); /*************************************** 功能:设置节点值 参数:[in] sValue 属性值 返回:true设置节点值成功 false设置节点值失败 **************************************/ bool SetNodeValue(CString sValue); /*************************************** 功能:插入子节点 参数:[in] sName 节点名 返回:非空表示插入节点成功,返回插入的新节点指针 空表示插入失败 **************************************/ CXMLNode * InsertNode(CString sName); /*************************************** 功能:判断是否存在子节点 参数:[in] pNode 子节点文件指针, 返回:false没有子节点 true有子节点 **************************************/ bool HasChild(MSXML2::IXMLDOMNodePtr pNode);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值