最近遇到一个问题,用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).
分享到:
相关推荐
主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下
根据需要将xml格式的代码解析成LIST数组,可以解2层和3层的 根据需要传送不同节点数据就可以了。
此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……
* 解析某个xml文件,并在内存中创建DOM树 * @param xmlFile 要解析的XML文件 * @return 解析某个配置文件后的Document * @throws Exception xml文件不存在 */ public static Document parse( String xml...
附件是我写的一个demo程序,该程序的功能是根据一个定义好的XSD文件去检查指定的XML文件是否满足XSD的约束。 这里的约束比标准的约束要弱一些,比如...2 根据得到XML结构,逐一检查目标XML中是否存在指定的元素或属性。
* 获得某节点下的某个子节点(指定子节点名称,和某个属性的值) * 即获取parentElement下名字叫childName,并且属性attributeName的值为attributeValue的子结点 * @param parentElement 要获取子节点的...
xstream可以完美转换xml,与以往的解析xml工具dom相比,xstream是一个易用的、开源 的库,使用起来简单、小巧,容易理解,可以轻易的将java对象和xml文档相互转换,而 且可以修改某个特定的属性和节点名称。...
选择树的一个节点时,如何得到这个节点? 70.向编辑框中输入字符时,如何控制只输入整数? 71.描述使用JDBC连接数据库的过程 72.EJB分为几类?什么是BMP,CMP? 73.什么是JNDI? 74.ADO是什么?ActiveX数据对象,是...
结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 /a/b/c: 表示一层一层的,a下面 b下面的c 第二种形式 //b: 表示和这个名称相同,表示只要名称是b...
• sample13.htm 获得指定时间的毫秒表示 • sample14.htm 日期之差 • sample15.htm 求圆的面积 • sample16.htm 数字对象与数字 • sample17.htm 字符串长度 • sample18...
3. 定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序 4. 定义元素或者属性的数据类型 5. 定义元素或者属性的默认值或者固定值 Xml Schema的根元素: <?xml version="1.0"?> ...
首先数据表中的Blob字段在Java领域对象中声明为byte[]类型,而非java.sql.Blob类型。 2.数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即...
C# 获取数据库中某个某个表的创建脚本 DbHelperV2 - Teddy的通用数据库访问组件设计和思考 也论该不该在项目中使用存储过程代替SQL语句 如何使数据库中的表更有弹性,更易于扩展 存储过程——天使还是魔鬼 如何获取...
9. .taskAssignee("李四") // 指定某个人 10. .list(); 11. for(Task task:taskList){ 12. System.out.println("任务ID:"+task.getId()); 13. System.out.println("任务名称:"+task.getName()); 14. System....
你一定要指定其中的各种关系 , 如果没有指定 , 就默认 Hierarchy 里面装的是来自立方体中的真实表 . 属性如下: 属性名 含义 name Hierarchy 的名称,该值可以为空,为空时表示 Hirearchy 的名字和 Dimension 的...
4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、...
节点变量表示为树型结构中的一个节点,通常在XML处理中使用。 在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, {“B...
多个域名对应同个Web站点 你只需先将某个IP地址绑定到Web站点上,再在DNS服务器中,将所需域名全部映射向你的这个IP地址上,则你在浏览器中输入任何一个域名,都会直接得到所设置好的那个网站的内容。 搭建IIS服务器...
正如Using Deferreds in jQuery 1.5一文中说明的,其结果是在jQuery中能够将依赖于某个任务(事件)结果的逻辑与任务本身解耦了。这一点在JavaScript中其实并不新鲜,Mochikit和Dojo等已经实现有些日子了。由于...