CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何读取XML中节点的属性值,高手帮忙,谢谢大家了,工作中,急用啊,多谢了。

楼主zheng2637(瀚海孤帆)2005-01-05 11:06:43 在 Java / J2SE / 基础类 提问

<?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

相关问题

  • 如何删除一个链表的节点?多谢!多谢!
  • 树视图节点的拖动问题,急用!!!!给分
  • 用javascript 怎样增加,删除节点(急用)!
  • 在DOM中,怎样移动,拷贝节点?(非常急用!)
  • 谁有WIN32masm ,请给我发一个,急用,多谢了!!
  • 请教 谁有linux下用的邮件系统 ?急用 多谢
  • 请教 谁有linux下用的邮件系统 ?急用 多谢~
  • 关于RTF中文显示问题,急用,多谢帮忙。
  • 关于JNI,保证给分,多谢,急用
  • 谁有联想xp100的电路图???急用!!多谢了

关键词

  • xml
  • 读取
  • saxbuilder
  • 使用jdom
  • builder
  • doc

得分解答快速导航

  • 帖主:zheng2637
  • Jacky1206
  • ops2000
  • wjsfr
  • wjsfr

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo