`

用jdom获取多个相同标签名的不同属性值的方法

阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
		<Key Name="China">
			<Value Name="TextKey">China</Value>
			<Value Name="Enabled">true</Value>
			<Value Name="PhotoIDWidth">38PhotoIDWidth</Value>
			<Value Name="PhotoIDHeight">38</Value>
			<Key Name="Adult">
				<Value Name="CrownPercent">0.10</Value>
				<Value Name="HeadPercent">0.60AdultHeadPercent</Value>
			</Key>
			<Key Name="Child">
				<Value Name="CrownPercent">0.10</Value>
				<Value Name="HeadPercent">0.60ChildHeadPercent</Value>
			</Key>
		</Key>
		<Key Name="Australia">
			<Value Name="TextKey">Australia</Value>
			<Value Name="Enabled">true</Value>
			<Value Name="PhotoIDWidth">35PhotoIDWidth</Value>
			<Value Name="PhotoIDHeight">45</Value>
			<Key Name="Adult">
				<Value Name="CrownPercent">0.061</Value>
				<Value Name="HeadPercent">0.756"Adult"HeadPercent</Value>
			</Key>
			<Key Name="Child">
				<Value Name="CrownPercent">0.072</Value>
				<Value Name="HeadPercent">0.711ChildHeadPercent</Value>
			</Key>
		</Key>
		<Key Name="Austria">
			<Value Name="TextKey">Austria</Value>
			<Value Name="Enabled">true</Value>
			<Value Name="PhotoIDWidth">35PhotoIDWidth</Value>
			<Value Name="PhotoIDHeight">45</Value>
			<Key Name="Adult">
				<Value Name="CrownPercent">0.064</Value>
				<Value Name="HeadPercent">0.744AdultHeadPercent</Value>
			</Key>
			<Key Name="Child">
				<Value Name="CrownPercent">0.078</Value>
				<Value Name="HeadPercent">0.689ChildHeadPercent</Value>
			</Key>
		</Key>
</Configuration>


package input;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class ReadXML {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws JDOMException, IOException {
        SAXBuilder sb = new SAXBuilder();
        //构造文档对象
        Document doc = sb.build(Test.class.getClassLoader().getResourceAsStream("nation.xml"));
        //获取根元素
        Element root = doc.getRootElement();
        //定位到<Configuration> -> <Key>
        List<Element> list = root.getChildren("Key");
        List<Element> children = new ArrayList<Element>();
        List<Element> childrens = new ArrayList<Element>();
        for (int i = 0; i < list.size(); i++) {
        	Element element = (Element) list.get(i);
        	System.out.print(element.getAttributeValue("Name"));
        	//定位到<Configuration> -> <Key>  -> <Value>
        	children = element.getChildren("Value"); 
        	for(int j=0; j<children.size(); j++){
        		Element elementChildren = (Element) children.get(j);
        		//定位到<Configuration> -> <Key>  -> <Value Name="PhotoIDWidth">
        		if(elementChildren.getAttributeValue("Name").equals("PhotoIDWidth")){
        			//获取<Configuration> -> <Key>  -> <Value Name="PhotoIDWidth"> 属性值
        			System.out.print("<--------->"+elementChildren.getAttributeValue("Name"));
        			//获取<Configuration> -> <Key>  -> <Value Name="PhotoIDWidth"> 标签里内容
            		System.out.print(","+elementChildren.getText());
            	}
        	}
        	children.clear();
        	//定位到<Configuration> -> <Key>  -> <Key>
        	children = element.getChildren("Key");
        	for(int j=0; j<children.size(); j++){
        		Element elementChildren = (Element)children.get(j);
        		//定位到<Configuration> -> <Key>  -> <Key Name="Child">
        		if(elementChildren.getAttributeValue("Name").equals("Child")){
        			//定位到<Configuration> -> <Key>  -> <Key Name="Child"> -> <Value>
        			childrens = elementChildren.getChildren("Value");
        			for(int k=0; k<childrens.size(); k++){
        				Element elementChildrens = (Element)childrens.get(k);
        				//定位到<Configuration> -> <Key>  -> <Key Name="Child"> -> <Value Name="HeadPercent">
        				if(elementChildrens.getAttributeValue("Name").equals("HeadPercent")){
        					System.out.println("<--------->"+elementChildrens.getText());
        				}
        			}
        		}
        	}
        }
    }
}



打印结果:
China<--------->PhotoIDWidth,38PhotoIDWidth<--------->0.60ChildHeadPercent
Australia<--------->PhotoIDWidth,35PhotoIDWidth<--------->0.711ChildHeadPercent
Austria<--------->PhotoIDWidth,35PhotoIDWidth<--------->0.689ChildHeadPercent
分享到:
评论

相关推荐

    用jdom解析xml文件

    6. 访问元素和属性:对于每个元素,可以获取其标签名、文本内容、属性等。例如,获取元素的名称:`String tagName = element.getName();`,获取属性值:`String attrValue = element.getAttributeValue("attribute_...

    JDOM v1.0 API

    每个元素都有一个标签名、属性集和子元素。 2. **Attribute(属性)**:XML元素可以有零个或多个属性。在JDOM中,`org.jdom.Attribute`类用于表示这些属性,每个属性都有一个名字和值。 3. **Document(文档)**:...

    jdom jar 函数

    5. **Namespace(命名空间)**:用于解决XML文档中相同标签名的冲突问题,通过指定前缀和URI来区分不同的标签。 ### JDOM的核心类与方法 1. **SAXBuilder**:负责从XML字符串或输入流构建Document对象,使用`build...

    NIIT试题

    - **属性值必须用引号包围**:如果元素有属性,则属性值必须放在引号内。 - **文档必须有根元素**:每个XML文档必须有一个唯一的根元素,所有的其他元素都应该是这个根元素的子元素。 **例题分析:** 对于第三个...

    XML...枚举。。。注解

    标签中可以包含属性,属性名与值之间以空格分隔,值需用引号包围。正确嵌套是必需的,意味着开始标签和结束标签必须对应。XML文档的首行应包含文档声明,例如`...

    javaweb开发人员面试题及答案.pdf

    - `session.getAttribute("name")`用于从`HttpSession`对象中获取名称为"name"的属性值。 **15. 在J2EE中,编写Servlet过滤器时,哪个接口用于调用过滤器链中的下一个过滤器?** - **知识点解析:** - `...

    关于xml的学习文档

    XML,全称是eXtensible Markup Language,可扩展标记语言,是一种用于标记数据的语言,广泛应用在数据交换、配置文件、文档存储等多个领域。本文档将深入探讨XML的基础语法和在Java环境下的编程实践,旨在帮助你提升...

    xml解析和组装源代码

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、自解释性和平台无关性而被广泛应用于软件开发、Web服务、数据交换等多个领域。XML文档由一系列元素组成,每个元素都有自己的...

    xml入门教程/xml入门教程

    - 属性值需要用引号括起来。 - 特殊字符需要用实体引用。 #### 7. 字符转义与引用 - **字符转义**:`&lt;`表示`,`&gt;`表示`&gt;`,`&amp;`表示`&`,`&quot;`表示`"`,`&apos;`表示`'`。 - **引用**:使用实体声明...

    笔试试题-J2EE开发技术

    - 隔离性(Isolation):多个并发事务之间不能互相干扰。 - 持久性(Durability):一旦事务完成,它对系统的影响将是永久的。 ##### 10. 在命令行模式下,如何导出本机oracle10g数据中的某个帐号下的所有内容? ...

Global site tag (gtag.js) - Google Analytics