谁能帮我根据下面这个XML文档 中的 name属性 查找 和修改 value 的值 ?写个java类 查找 修改

<?xmlversion="1.0"encoding="UTF-8"?><prop><mess><propertyname="sSize"value="52"></pro... <?xml version="1.0" encoding="UTF-8"?>
<prop>
<mess>
<property name="sSize" value="52"></property>
<property name="cSize" value="23"></property>
<property name="pSize" value="15"></property>
<property name="aSize" value="25"></property>
</mess>
</prop>
展开
 我来答
fzy范忠云
2012-06-09 · TA获得超过459个赞
知道小有建树答主
回答量:117
采纳率:100%
帮助的人:67.7万
展开全部
先创建一个 xml 文件,我暂将它取名为:prop.xml,一个解析这个 xml 资源文件的类,
取名为 XmlDom.java,和一个测试类,取名 Test.java。废话少说,看代码:
prop.xml
<?xml version="1.0" encoding="UTF-8"?>
<prop>
<mess>
<property name="sSize" value="52"></property>
<property name="cSize" value="23"></property>
<property name="pSize" value="15"></property>
<property name="aSize" value="25"></property>
</mess>
</prop>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
XmlDom.java
package com.fancy.util;

import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
/**
* -----------------------------------------
* @文件: XmlDom.java
* @作者: fancy
* @邮箱: fancyz@yeah.net
* @时间: 2012-6-9
* @描述: JDOM 解析XML资源
* -----------------------------------------
*/
public class XmlDom {

/**
* @方法名: obtainValue
* @参数名:@param name:属性名
* @参数名:@return :返回与属性名一致的属性值
* @描述语: 解析XML数据,返回与属性名一致的属性值,查找不到匹配属性名则返回null
*/
public static String obtainValue(String name){
try {
//载入资源
SAXBuilder saxBuilder = new SAXBuilder();
Document doc = saxBuilder.build("prop.xml");
//获取根元素(prop)
Element root = doc.getRootElement();
//获取根元素下面的所有子元素(mess)
List<Element> messList = root.getChildren("mess");
//子根元素(mess)
Element childrenRoot = null;
//property元素集合
List<Element> propertyList = null;
//遍历根元素的子元素集合(即遍历mess元素)
for(int i = 0; i < messList.size(); i++){
//将根元素prop下的mess子元素作为一个新的子根元素
childrenRoot = messList.get(i);
//获取子根元素mess下的所有property子元素
propertyList = childrenRoot.getChildren("property");
//遍历子根元素的子元素集合(即遍历property元素)
for(int j = 0; j < propertyList.size(); j++){
//获取property元素
Element element = propertyList.get(j);
//element.getAttributeValue("name"):获取property中name属性的值
if(element.getAttributeValue("name").equals(name)){ //如果name的值一致
return element.getAttributeValue("value"); //取得name对应的value属性值
}
}
}
//遍历完没有查找到结果返回null
return null;
} catch (Exception e) {e.printStackTrace();}
return null;
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Test.java
package test;

import com.fancy.util.XmlDom;
/**
* -----------------------------------------
* @文件: Test.java
* @作者: fancy
* @邮箱: fancyz@yeah.net
* @时间: 2012-6-9
* @描述: 测试类
* -----------------------------------------
*/
public class Test {

public static void main(String[] args) {
System.out.println(XmlDom.obtainValue("pSize"));
System.out.println(XmlDom.obtainValue("PSize"));
}

}
测试输出:
15
null

PS个人看法:XML这种格式的数据主要是用来解析用的吧,就我目前接触过的都是解析,没有做过修改,这里就不尝试,坐观答案哈^_^
代码都注释的尽可能详细了,就不多解释了...
langaCK
2012-06-06
知道答主
回答量:29
采纳率:0%
帮助的人:16.5万
展开全部
使用Dom4j-1.6.1.jar这个jar包来读取,获取根节点下所有的子节点,比如获取prop了,然后得到mess节点,在获取mess节点的子节点,有4个子节点,循环,依次获得property节点的name属性,value属性,组装成map类型,name是key值,value是内容,之后你就操作这个map,修改name对应的value值,保存时,你拿这map的key值与xml的name值比较,符合就更新。

如果有不懂的,再联系我。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式