jdom使用入门及namespace注意事项【原】
报文样例
<person:info xmlns:person="http://person/abc" id="1"> <fruit id="2">
<apple id="3" color="red" size="big" >good apple</apple>
</fruit> <person:pets id="4"> <cat:pet xmlns:cat="http://cat/def" id="5" type="cat">
<person:master id="6">King</person:master>
<cat:age id="7">1</cat:age>
<cat:color id="8">white</cat:color>
<happy id="9">true</happy>
</cat:pet> <dog:pet xmlns:dog="http://dog/ghi" id="10" type="dog">
<person:master id="11">King</person:master>
<dog:age id="12">2</dog:age>
<dog:color id="13">white</dog:color>
<happy id="14">false</happy>
</dog:pet> </person:pets> </person:info>
jdom样例
package d; import java.io.File;
import java.util.List; import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter; public class JdomDemo { @SuppressWarnings({ "unused", "unchecked" })
public static void main(String[] args) throws Exception{
File file = new File("C:/Users/35992/Desktop/a.xml");
Document doc = (new SAXBuilder()).build(file);
Element root = doc.getRootElement();
Namespace rootNS = root.getNamespace(); Element fruit = root.getChild("fruit");//取单个直接孩子节点
Element apple =fruit.getChild("apple");//取单个直接孩子节点
List<Attribute> attrList = apple.getAttributes();
for(int i = 0 ; i < attrList.size() ; i++){//遍历apple 的3个属性
String appleAttrValue = attrList.get(i).getValue();
System.out.println(appleAttrValue);
} //<person:pets id="4"> 有冒号需要添加person的Namespace,不添加会找不到,返回null
Element petNull = root.getChild("pets");
//<person:pets id="4"> 有冒号需要添加person的Namespace
Element petNotNull = root.getChild("pets",Namespace.getNamespace("person", "http://person/abc")); Element pets = root.getChild("pets", rootNS);//取单个直接孩子节点 List<Element> petList = pets.getChildren();//取所有直接孩子节点们
for(int i = 0 ; i < petList.size(); i++){//pets有2个pet子节点
Element pet = petList.get(i); if("cat".equals(pet.getAttributeValue("type"))){
Element masterNull = pet.getChild("master");
Element ageNull = pet.getChild("age");
Element colorNull = pet.getChild("color");
Element happy = pet.getChild("happy");
System.out.println(masterNull+" - " + ageNull+" - " + colorNull+" - " + happy);
} if("dog".equals(pet.getAttributeValue("type"))){
//<person:master id="11">King</person:master> 有冒号需要添加person的Namespace
Element master = pet.getChild("master",Namespace.getNamespace("person", "http://person/abc"));
//<dog:age id="12">2</dog:age> 有冒号需要添加dog的Namespace
Element age = pet.getChild("age",Namespace.getNamespace("dog", "http://dog/ghi"));
//<dog:color id="13">white</dog:color> 有冒号需要添加dog的Namespace
Element color = pet.getChild("color",Namespace.getNamespace("dog", "http://dog/ghi"));
Element happy = pet.getChild("happy");//<happy id="14">false</happy> 没有冒号,直接取
System.out.println(master+" - " + age+" - " + color+" - " + happy);
}
} //格式化输出xml文件字符串
Format format = Format.getCompactFormat().setEncoding("utf-8").setIndent("\t");
XMLOutputter xmlout = new XMLOutputter(format);
String result = xmlout.outputString(doc);
System.out.println(result);
} }
参考
XML 命名空间(XML Namespaces)--http://www.w3school.com.cn/xml/xml_namespaces.asp
jdom使用入门及namespace注意事项【原】的更多相关文章
- k8s入门之namespace(三)
namespace的作用就是用来隔离资源,将同一集群中的资源划分为相互隔离的组.同一名称空间内的资源名称要唯一,但不同名称空间时没有这个要求.有些k8s资源对象与名称空间没有关系,例如 Storage ...
- NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?
前言 近几天的几篇文章讲的内容非前面内容如系列的讲解,这几天文章都是我在项目中遇到的问题以及重新学习的知识,所以和大家分享一下,关于SQLite的文章多如牛毛,但是有些大多已经过时,为什么说过时,之前 ...
- Spring AOP入门——概念和注意事项
AOP什么? AOP在功能方面,它是之前和之后运行一些业务逻辑,一些操作(比方记录日志.或者是推断是否有权限等),这些操作的加入.全然不耦合于原来的业务逻辑.从而对原有业务逻辑全然是透明. 也就是说. ...
- 【dp入门题】【跟着14练dp吧...囧】
A HDU_2048 数塔 dp入门题——数塔问题:求路径的最大和: 状态方程: dp[i][j] = max(dp[i+1][j], dp[i+1][j+1])+a[i][j];dp[n][j] = ...
- Android Navigation 架构组件入门教程
Android Navigation 架构组件入门教程 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:https://www.cnblogs.com/cavalier-/p/1 ...
- Dbutils学习(介绍和入门)
一:Dbutils是什么?(当我们很难理解一个东西的官方解释的时候,就让我们记住它的作用) Dbutils:主要是封装了JDBC的代码,简化dao层的操作. 作用:帮助java程序 ...
- C++中对C的扩展学习新增语法——namespace
NAMESPACE语法 namespace主要解决了命名冲突的问题,语法如下 Namespace注意事项: namespace中可以定义常量.变量.函数.结构体.枚举.类等. namespace 只能 ...
- 【DWR系列02】-DWR逆向Ajax即服务器推送
.literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...
- BOOST 线程完全攻略 - 基础篇
http://blog.csdn.net/iamnieo/article/details/2908621 2008-09-10 12:48 9202人阅读 评论(3) 收藏 举报 thread多线程l ...
随机推荐
- springMVC整理02--常用注解的使用
1.使用@RequestMapping 映射请求 1.1在类和方法上添加@RequestMappingSpringMVC 使用@RequestMapping 为控制器指定可以处理哪些 URL 请求. ...
- BZOJ 2002 弹飞绵羊
LCT 刚学LCT,对LCT的性质不太熟练,还需要多多练习.. 对每一个点,将其与它能够到达的点连一条虚边.弹出去的话就用n+1这个节点表示. 第一种操作我们需要从LCT的性质入手,问的问题其实就是x ...
- MT【266】求$a$的范围
已知 $a$ 为常数,函数$f(x)=\dfrac{x}{\sqrt{a-x^2}-\sqrt{1-x^2}}$ 的最小值为$-\dfrac{2}{3}$,则 $a$ 的取值范围_____ 解: 考虑 ...
- #565. 「LibreOJ Round #10」mathematican 的二进制(期望 + 分治NTT)
题面 戳这里,题意简单易懂. 题解 首先我们发现,操作是可以不考虑顺序的,因为每次操作会加一个 \(1\) ,每次进位会减少一个 \(1\) ,我们就可以考虑最后 \(1\) 的个数(也就是最后的和) ...
- JAVA 获取指定网址的IP地址 实例
如今买票是一大难事,在高峰时段 打开12306网站,慢的像蜗牛,想到以前用修改hosts文件来登录Google(Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址 ...
- 【转】idea设置JVM运行参数
对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...
- BZOJ2406矩阵
题目描述 题解 最大值最小,一眼二分没的说. 然后考虑建出这么个图,每行看做一个点,每列看做一个点,每个点看做一条连接行与列的边,源点向每行连s-mid__s+mid的边,行与列连L__R的边,列到汇 ...
- pandas to_excel
报错:IllegalCharacterError 其原因是字段中包含了unicode字符. 解决方案: # 首先,安装python包xlsxwriter pip install xlsxwriter ...
- 对于submit text3运行Python脚本的解决方法
先抛出一些配置信息吧 电脑安装了Python2和Python3两种版本,并且还改了exe文件的名字,可能这与默认的submit text3配置不同了吧,导致错误. 先抛出一些错误吧 首先,自动CTRL ...
- BZOJ 1054: [HAOI2008]移动玩具(bfs)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1054 题解: 将每一种状态十六位压成二进制,然后bfs..不解释.. p.s.注意特判初始 ...