`

java中如何直接获得xml中的某个指定的节点

阅读更多

    最近遇到一个问题,用java解析xml时,需要获得一个xml文档中指定的某个节点,当然最简单的办法就是遍历所有的节点,如某个节点满足条件,则是我们要的结果,但我不想遍历所有的节点,因为这个问题只是一个复杂过程中的一小步,它会被反复调用,因此我需要最直接的方法获得某个已知属性值的确定节点。因此,这个问题也可以概括为:有没有根据节点(或name)属性名获得该节点的原api。
     具体一些,有如下xml文档:

<sheet>
	<field row="2" col="2"  type="int">DEA_XZ</field2_2>
	<field row="2" col="3"  type="string">RTP_ID</field2_3>
	<field row="2" col="4"  type="string">DEA_YEAR</field2_4>
	<field row="2" col="7"  type="int">DEA_RTP_TYPE</field2_7>
</sheet>

   我想获得row="2" col="3"的节点,据我所查,好像没有直接的方法。
   变通一下,xml修改如下:

 

<sheet>
	<field name="row2_col2"  type="int">DEA_XZ</field2_2>
	<field name="row2_col3"  type="string">RTP_ID</field2_3>
	<field name="row2_col4"  type="string">DEA_YEAR</field2_4>
	<field name="row2_col7"  type="int">DEA_RTP_TYPE</field2_7>
</sheet>

   这样呢?有没有直接的api,可以获得name为row2_col3的节点?同样,我也没有得到答案,大家有知道告诉小弟一下,不胜感激。
   实在没有办法,我就用了种“另类”的方式,xml如下:

<sheet>
	<field2_2 type="int">DEA_XZ</field2_2>
	<field2_3 type="string">RTP_ID</field2_3>
	<field2_4 type="string">DEA_YEAR</field2_4>
	<field2_7 type="int">DEA_RTP_TYPE</field2_7>
</sheet>

   这样看起来很不优雅,至少我是这么认为的。但这样却可以直接拿到你想要的节点:

 

org.jdom.Element root = document.getRootElement();
root.getChild("field2_3");

   目前,我就是这样解决的,但我感觉很不优雅,我想我的xml文档(配置)文件应该保持第一种或第二种格式更好些。所以请大家帮忙,看看有没有直接的方法(api).

2
1
分享到:
评论
3 楼 DavyLee 2009-03-03  
greatghoul 写道

和html一样的道理嘛org.w3c.dom 接口 DocumentElement getElementById(String elementId)

已经说了,我没有找到这样得api,你自己可以找找看
2 楼 greatghoul 2009-03-03  
和html一样的道理嘛
org.w3c.dom
接口 Document
Element getElementById(String elementId)
1 楼 咖啡舞者 2009-03-02  
XPATH 看看

相关推荐

    Java使用正则表达式提取XML节点内容的方法示例

    主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下

    java XML转成LIST可以转成指定的类数组

    根据需要将xml格式的代码解析成LIST数组,可以解2层和3层的 根据需要传送不同节点数据就可以了。

    dom4j 解析(读取) xml 节点数据

    此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……

    Java解析XML工具类--(java源码)

    * 解析某个xml文件,并在内存中创建DOM树 * @param xmlFile 要解析的XML文件 * @return 解析某个配置文件后的Document * @throws Exception xml文件不存在 */ public static Document parse( String xml...

    根据XSD检查XML并修复

    附件是我写的一个demo程序,该程序的功能是根据一个定义好的XSD文件去检查指定的XML文件是否满足XSD的约束。 这里的约束比标准的约束要弱一些,比如...2 根据得到XML结构,逐一检查目标XML中是否存在指定的元素或属性。

    java xml解析

    * 获得某节点下的某个子节点(指定子节点名称,和某个属性的值) * 即获取parentElement下名字叫childName,并且属性attributeName的值为attributeValue的子结点 * @param parentElement 要获取子节点的...

    基于Java的XML解析与反射设计模式.doc

    xstream可以完美转换xml,与以往的解析xml工具dom相比,xstream是一个易用的、开源 的库,使用起来简单、小巧,容易理解,可以轻易的将java对象和xml文档相互转换,而 且可以修改某个特定的属性和节点名称。...

    JAVA面试题最全集

    选择树的一个节点时,如何得到这个节点? 70.向编辑框中输入字符时,如何控制只输入整数? 71.描述使用JDBC连接数据库的过程 72.EJB分为几类?什么是BMP,CMP? 73.什么是JNDI? 74.ADO是什么?ActiveX数据对象,是...

    day023-xml解析笔记和代码.rar

    结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 /a/b/c: 表示一层一层的,a下面 b下面的c 第二种形式 //b: 表示和这个名称相同,表示只要名称是b...

    《javaScrip开发技术大全》源代码

    • sample13.htm 获得指定时间的毫秒表示 • sample14.htm 日期之差 • sample15.htm 求圆的面积 • sample16.htm 数字对象与数字 • sample17.htm 字符串长度 • sample18...

    如何定义Xsd文件及XSD的解释

    3. 定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序 4. 定义元素或者属性的数据类型 5. 定义元素或者属性的默认值或者固定值 Xml Schema的根元素: &lt;?xml version="1.0"?&gt; ...

    ssh(structs,spring,hibernate)框架中的上传下载

    首先数据表中的Blob字段在Java领域对象中声明为byte[]类型,而非java.sql.Blob类型。  2.数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即...

    asp.net知识库

    C# 获取数据库中某个某个表的创建脚本 DbHelperV2 - Teddy的通用数据库访问组件设计和思考 也论该不该在项目中使用存储过程代替SQL语句 如何使数据库中的表更有弹性,更易于扩展 存储过程——天使还是魔鬼 如何获取...

    ActivitiDemo_LFP_HelloWorld实现

    9. .taskAssignee("李四") // 指定某个人 10. .list(); 11. for(Task task:taskList){ 12. System.out.println("任务ID:"+task.getId()); 13. System.out.println("任务名称:"+task.getName()); 14. System....

    jpivot学习总结.doc

    你一定要指定其中的各种关系 , 如果没有指定 , 就默认 Hierarchy 里面装的是来自立方体中的真实表 . 属性如下: 属性名 含义 name Hierarchy 的名称,该值可以为空,为空时表示 Hirearchy 的名字和 Dimension 的...

    Activiti6.0教程例子下载

    4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、...

    freemarker总结

    节点变量表示为树型结构中的一个节点,通常在XML处理中使用。 在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, {“B...

    IIS6.0 IIS,互联网信息服务

    多个域名对应同个Web站点 你只需先将某个IP地址绑定到Web站点上,再在DNS服务器中,将所需域名全部映射向你的这个IP地址上,则你在浏览器中输入任何一个域名,都会直接得到所设置好的那个网站的内容。 搭建IIS服务器...

    jquery插件使用方法大全

    正如Using Deferreds in jQuery 1.5一文中说明的,其结果是在jQuery中能够将依赖于某个任务(事件)结果的逻辑与任务本身解耦了。这一点在JavaScript中其实并不新鲜,Mochikit和Dojo等已经实现有些日子了。由于...

Global site tag (gtag.js) - Google Analytics