一,没有namespace的情况:
一个src/studentinfo.xml的xml文件放在src目录下:文件中的<!--student-info xmlns="http://www.jdom.org"-->是xml中的注释,没有用。
<?xml version="1.0" encoding="gb2312"?>
<!--student-info xmlns="http://www.jdom.org"-->
<student-info>
<student>
<number>001</number>
<name>lnman</name>
<age>24</age>
</student>
</student-info>
java的读:
import java.util.Iterator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
public class ReadXml2Namespace {
public static void main(String[] args) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document read_doc = builder.build("src/studentinfo.xml");
Element root = read_doc.getRootElement();
System.out.println("---------STUDENT--------------");
for(Iterator<Element> itr= root.getChildren().iterator(); itr.hasNext();) {
Element e = itr.next();
System.out.println(e.getChildText("number"));
System.out.println(e.getChildText("name"));
System.out.println(e.getChildText("age"));
// Namespace ns = Namespace.getNamespace("http://www.jdom.org");
// System.out.println(e.getChildText("number", ns));
// System.out.println(e.getChildText("name", ns));
// System.out.println(e.getChildText("age", ns));
}
System.out.println("------------------------------");
}
}
运行后结果为:
---------STUDENT--------------
001
lnman
24
------------------------------
二,有namespace的xml
改一下前面的xml文件:
<?xml version="1.0" encoding="gb2312"?>
<student-info xmlns="http://www.jdom.org">
<!--student-info-->
<student>
<number>001</number>
<name>lnman</name>
<age>24</age>
</student>
</student-info>
这样运行的结果为:
---------STUDENT--------------
null
null
null
------------------------------
修改前面的java程序:
import java.util.Iterator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
public class ReadXml2Namespace {
public static void main(String[] args) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document read_doc = builder.build("src/studentinfo.xml");
Element root = read_doc.getRootElement();
System.out.println("---------STUDENT--------------");
for(Iterator<Element> itr= root.getChildren().iterator(); itr.hasNext();) {
Element e = itr.next();
// System.out.println(e.getChildText("number"));
// System.out.println(e.getChildText("name"));
// System.out.println(e.getChildText("age"));
Namespace ns = Namespace.getNamespace("http://www.jdom.org");
System.out.println(e.getChildText("number", ns));
System.out.println(e.getChildText("name", ns));
System.out.println(e.getChildText("age", ns));
}
System.out.println("------------------------------");
}
}
就好了:
---------STUDENT--------------
001
lnman
24
------------------------------
getChild(String, Namespace) - Method in class org.jdom.Element
This returns the first child element within this element with the given local name and belonging to the given namespace.
getChild(String) - Method in class org.jdom.Element
This returns the first child element within this element with the given local name and belonging to no namespace.
getChildren() - Method in class org.jdom.Element
This returns a List
of all the child elements nested directly (one level deep) within this element, as Element
objects.
getChildren(String) - Method in class org.jdom.Element
This returns a List
of all the child elements nested directly (one level deep) within this element with the given local name and belonging to no namespace, returned as Element
objects.
getChildren(String, Namespace) - Method in class org.jdom.Element
This returns a List
of all the child elements nested directly (one level deep) within this element with the given local name and belonging to the given Namespace, returned as Element
objects.
getChildText(String) - Method in class org.jdom.Element
Returns the textual content of the named child element, or null if there's no such child.
getChildText(String, Namespace) - Method in class org.jdom.Element
Returns the textual content of the named child element, or null if there's no such child.
总结:
就是要小心xml的namespace。
分享到:
相关推荐
在实际开发中,我们还需要注意处理XML文档的命名空间(Namespace),JDOM提供了Namespace类来处理这一问题。例如: ```java Namespace ns = Namespace.getNamespace("prefix", "uri"); Element root = new Element...
Java生成XML是Java编程中常见的任务,特别是在处理数据序列化或与外部系统交换结构化信息时。本教程将深入探讨如何使用JDOM库在Java中生成...通过熟练掌握JDOM,开发者可以高效地在Java应用程序中实现XML的读写功能。
### JDOM解析XML文档 #### 一、JDOM概述与特点 ...通过本文对JDOM基本结构、类和方法的介绍,相信读者已经对如何使用JDOM有了初步的认识。接下来的文章将进一步深入探讨如何在实际项目中应用JDOM。
总的来说,JDOM是Java开发者处理XML文件的一种强大工具,尤其适合需要频繁读写和操作XML文档的场景。通过JDOM,开发者可以方便地创建、解析和修改XML文档,提高开发效率。在实际项目中,可以根据需求和性能考虑选择...
- **本地化支持**:JDOM内建对Java的I18N(国际化)支持,处理XML文档中的字符编码和语言特性更为方便。 - **XML Schema支持**:JDOM支持XML Schema验证,可以确保XML文档符合预定义的规范。 ### 3. JDOM的基本操作...
Java中的JDOM库是一个强大的工具,用于处理XML文档的创建、读取和修改。XML(eXtensible Markup Language)是一种被广泛应用于数据交换和存储的标记语言,它具有结构化和可扩展的特点。JDOM是Java的一个API,设计...
在实际开发中,JDOM1.1的源码学习有助于我们理解XML处理的底层逻辑,提升对XML操作的灵活性和效率。例如,了解`AttrListImpl`类如何维护元素的属性集合,`Namespace`类如何处理命名空间,以及`ContentList`接口如何...
JDOM提供了对XML文档的高效、方便的访问方式,使得开发者可以轻松地读取、创建和修改XML文档。JDOM基于SAX(Simple API for XML)和DOM(Document Object Model)解析器,但比DOM更轻量级,比SAX更面向对象。 以下...
在Java编程中,JDOM是处理XML数据的一种常见选择,因为它将XML文档表示为一系列的Java对象,使得开发者可以使用熟悉的Java API来操作XML。 **JDOM的基本结构:** JDOM的核心类包括Element(元素)、Attribute(属性...
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和...
深入JDOM的源代码,我们能看到它对XML事件的处理,如解析和序列化过程中的事件监听。例如,`org.jdom.event`包下的`ContentHandler`和`LexicalHandler`接口,以及对应的实现类,它们在解析XML时扮演了关键角色。 ...
JDOM 1.1通过提供对XML文档结构的直接映射,使得XML处理变得更加直观。开发者可以利用JDOM构建XML文档对象模型,然后通过这个模型进行读写操作,而无需深入理解底层的DOM或SAX解析机制。 JDOM的核心概念包括Element...
JDOM的目标是提供一个高效、便捷、纯Java的XML处理库,使得开发者能更容易地读写XML数据。在本文中,我们将深入探讨JDOM的核心概念、主要功能以及如何在实际开发中应用它。 ### JDOM的基本概念 1. **Element(元素...
通过这种方式,你可以使用JDOM轻松地对XML进行读写操作。不过需要注意的是,处理大型XML文档时,应考虑性能优化,如使用SAX或StAX解析器来避免加载整个文档到内存。此外,JDOM提供了丰富的API,可以实现更复杂的XML...
**JDOM库详解** ...总结来说,JDOM是Java程序员处理XML文档的强大工具,它简化了XML的读写过程,提供了丰富的API,并且在性能和兼容性上有所保障。通过JDOM 1.1.1,开发者可以更高效地进行XML相关的开发工作。
4. **`org.jdom.Namespace`**:管理命名空间,允许在XML文档中正确地引用带有前缀的元素和属性。 5. **`org.jdom.Content`**:这是一个接口,表示XML文档中的内容,包括元素、文本、注释等。 **三、使用JDOM解析...
JDOM v1.1 API是Java程序员处理XML文档的强大工具,其简洁的API设计使得XML的读写变得更加直观。虽然有更新的版本如JDOM2可用,但v1.1依然在许多项目中发挥着作用,尤其对于那些不需要最新特性的项目而言。了解并...
《JDOM 1.1.2:XML处理的利器...尽管后续版本有新的改进,但JDOM 1.1.2依然在许多项目中发挥着重要作用,尤其是对于那些对性能和内存管理有严格要求的场景。了解并熟练掌握JDOM,无疑会提升你在XML处理方面的专业技能。
8. **XPath支持**:JDOM提供对XPath表达式的支持,可以方便地查找、选择XML文档中的特定部分。 9. **事件驱动解析(Event-Based Parsing)**:JDOM支持SAX解析,允许通过事件处理器来处理XML数据,降低内存占用。 ...
**JDom API(中文版)** JDom,全称为Java Document Model,是一个用纯Java编写的XML处理库。它的设计目标是提供一个高效、灵活且易于使用...而JDom则更适合那些对XML处理有基本需求,且对性能要求不那么苛刻的项目。