如何读取XML中节点的属性值,高手帮忙,谢谢大家了,工作中,急用啊,多谢了。
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<ItemType EngName="ZCL1217" ChName="ZCL121777">
<Attrbute>
<ItemAttr EngName="ATTRZCL1" ChName="ATTRZCL1111" AttrValue="ATTRZCL1Value"/>
<ItemAttr EngName="ATTRZCL2" ChName="ATTRZCL22222" AttrValue="dddd"/>
</Attrbute>
<Process>
<ProDetail EngName="ZCLPROC2" ChName="ZCLPROC22222" IconName="PROCESS.ICO" LookupType="">
<AttrDetail EngName="PROCATTR1" ChName="PROCATTR111" AttrValue="fffffffff"/>
<AttrDetail EngName="PROCATTR2" ChName="PROCATTR4444" AttrValue="ATTRZCL1"/>
<AttrDetail EngName="PROCATTR3" ChName="PROCATTR3333" AttrValue="ATTRZCL2"/>
</ProDetail>
<ProDetail EngName="ZCLPROC3" ChName="ZCLPROC3333" IconName="PROCESS.ICO" LookupType="ZCLLOOK2222">
<AttrDetail EngName="PROCATTR1" ChName="PROCATTR11111" AttrValue="aaaaaa"/>
<AttrDetail EngName="PROCATTR2" ChName="PROCATTR222" AttrValue="ATTRZCL1"/>
</ProDetail>
</Process>
<Notification>
<NotifyDetail EngName="ZCLNOTI1" ChName="ZCLNOTI1111" IconName="NOTIFY.ICO" Message="ZCLMESS1111" LookupType="ZCLLOOK2222">
<AttrDetail EngName="ATTNOTI1" ChName="ATTNOTI1111" AttrType="CONSTANT" AttrValue="ATTNOTI1Value"/>
</NotifyDetail>
<NotifyDetail EngName="ZCLNOTI2" ChName="ZCLNOTI2222" IconName="NOTIFY.ICO" Message="ZCLMESS1111" LookupType="ZCLLOOK4444">
<AttrDetail EngName="ATTRNOTI1" ChName="ATTRNOTI1111" AttrType="CONSTANT" AttrValue="ATTRNOTI1Value"/>
</NotifyDetail>
</Notification>
<Function>
<FunDetail EngName="ZCLFUNC1" ChName="ZCLFUNC1111" IconName="FUNCTION.ICO" LookupType=""/>
<FunDetail EngName="ZCLFUNC2" ChName="ZCLFUNC2222" IconName="FUNCTION.ICO" LookupType=""/>
</Function>
<Message>
<MsgDetail EngName="ZCLMESS1" ChName="ZCLMESS1111">
<AttrDetail EngName="ZCLMESS1" ChName="ATTRMESS1111" AttrType="CONSTANT" AttrValue=""/>
<AttrDetail EngName="ZCLMESS1" ChName="ATTRMESS2222" AttrType="ITEMATTR" AttrValue="ATTRZCL1"/>
<AttrDetail EngName="ZCLMESS1" ChName="ATTRMESS3333" AttrType="CONSTANT" AttrValue="ATTRMESS3Value"/>
</MsgDetail>
<MsgDetail EngName="ZCLMESS2" ChName="ZCLMESS2222"/>
</Message>
<LookupType EngName="ZCLLOOK4" ChName="ZCLLOOK4444"/>
</ItemType>
</Root>
问题点数:100、回复次数:15Top
1 楼zheng2637(瀚海孤帆)回复于 2005-01-05 11:06:57 得分 0
顶一下,兄弟们
Top
2 楼IceCraft(心淡情浓)回复于 2005-01-05 13:40:08 得分 0
搜索一下csdn的文档中心里关于xml的文章,有使用jdom的介绍,使用jdom可以生成和读取xml。Top
3 楼zheng2637(瀚海孤帆)回复于 2005-01-05 13:51:09 得分 0
谢谢,能给个解决方案吗?Top
4 楼Jacky1206(胖胖,其实我不胖)回复于 2005-01-05 13:58:42 得分 20
用 jdom
示例如下:
//从xml文件里读取
SAXBuilder builder = new SAXBuilder();//初始化
try {
doc = builder.build(new File(path + XML_FILE));
}
catch (Exception e) {
e.printStackTrace();
return null;
}
String[] propName = new StringUtils().parsePropertyName(name);
Element root = doc.getRootElement();//得到根元素
for (int i = 0; i < propName.length; i++) {
root = root.getChild(propName[i]);//得到propName[i]
if (root == null) {
System.out.println("this element has no children!");
return null;//找不到,返回null
}
}
//取得属性值
String value = root.getText();
if ("".equals(value)) {
return null;//属性值为""返回null
}
else {
//放入session
value = value.trim();
session.setAttribute(name, value);
return value;
}Top
5 楼ops2000(吾痴石)回复于 2005-01-05 14:15:06 得分 20
NamedNodeMap map = null;
NodeList regions = doc.getElementsByTagName("Region");
for (int region = 0, regionNum = regions.getLength();
region < regionNum; region++) {
map = regions.item(region).getAttributes();
for (int i = 0, iSize = map.getLength(); i < iSize; i++) {
int rowFrom = 0, rowTo = 0;
short colFrom = 0, colTo = 0;
rowFrom = Integer.parseInt(map.getNamedItem("rowFrom").
getNodeValue());
rowTo = Integer.parseInt(map.getNamedItem("rowTo").getNodeValue());
colFrom = Short.parseShort(map.getNamedItem("colFrom").
getNodeValue());
colTo = Short.parseShort(map.getNamedItem("colFrom").
getNodeValue());Top
6 楼redex(cc)回复于 2005-01-05 14:16:57 得分 0
sax
www.saxproject.orgTop
7 楼zheng2637(瀚海孤帆)回复于 2005-01-05 14:24:49 得分 0
多谢高手,谢谢大家的帮忙。Top
8 楼dulang200x(独狼)回复于 2005-01-05 14:25:56 得分 0
:)
原来大家都在用Jdom 啊,,,帮忙顶
Top
9 楼ops2000(吾痴石)回复于 2005-01-05 14:33:45 得分 0
这篇文章或许对你有帮助,我刚刚看到的:
http://dev.csdn.net/develop/article/14/14917.shtmTop
10 楼ops2000(吾痴石)回复于 2005-01-05 14:34:20 得分 0
不好意思,上面的发错了.Top
11 楼fengye2002(枫叶)回复于 2005-01-05 16:07:07 得分 0
用jdom.jar :
Document doc=null;
SAXBuilder sbuilder = new SAXBuilder();
Reader read = new StringReader(s);
try {
doc = sbuilder.build(read);
}
catch (JDOMException ex) {
throw new JDOMException(ex);
}
Element root = doc.getRootElement();
Element varElement = root.getChild("Root");
Iterator it = varElement.getChildren().iterator();
while(it.hasNext())
{
.................
}Top
12 楼wjsfr(令狐葱:Rachel)回复于 2005-01-05 16:47:29 得分 50
只是读取的话,用SAX就可以了
public void startElement(String namespaceURI,
String lName,
String qName,
Attributes attrs) throws SAXException {
String eName = lName;
if ("".equals(eName))
eName = qName;
lastElement = eName;
if (attrs != null) {
for (int i = 0; i < attrs.getLength(); i++) {
String aName = attrs.getLocalName(i);
if ("".equals(aName))
aName = attrs.getQName(i);
if (aName.equals("about") || aName.equals("rdf:about")) //只把about属性加入结果集
add2Map(aName, attrs.getValue(i));
}
}
}
public void endElement(String namespaceURI,
String sName,
String qName) throws SAXException {
if (sName.equals("Description") || qName.equals("rdf:Description")) {
Object value = tags.get("label");
if (value != null) {
ArrayList temp = (ArrayList) value;
for (int i = 0; i < temp.size(); i++) {
if ( ( (String) temp.get(i)).toLowerCase().indexOf(searchKey) != -1) {
resultArray.add(tags);
}
}
}
tags = null;
}
}Top
13 楼zheng2637(瀚海孤帆)回复于 2005-01-06 15:12:40 得分 0
还 有个问题啊
如何将XML文件,转化为Document,谢谢Top
14 楼wjsfr(令狐葱:Rachel)回复于 2005-01-07 09:15:02 得分 10
比如:
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse(fileName);
Top
15 楼zheng2637(瀚海孤帆)回复于 2005-01-10 11:14:34 得分 0
谢谢,给分!!Top




