JDOM操作XML文档高级篇XML验证,创建带名字空间的xml, xml文档的修改
2012-04-26 23:29
351 查看
下面我通过几个例子来实现JDOM来操作XML文档:
1、 xml文档的验证 DTD 我们经常使用XML来验证文档的合法性。
我们需要在xml的开头引入 <!DOCTYPE rootName SYSTEM "xxx.dtd"> 这里的PUBLIC 引入的是私有DTD也就是我们自己定义的 。我们平时使用这种即可 。
另一种是 <!DOCTYPE rootName PUBLIC ".........">这个是ISO标准的DTD ,是已经定义好了的 具体DTD 我们可以根据ISO的提供引入。
注意 <!DOCTYPE 之间不要有空格 。下面是代码 具体的xml和 dtd文件自己去定义吧。
2、建立一个带名字空间的xml文档 。。。
<%
Element root=new Element("root"); //定义根元素
Document myDocument=new Document(root) ; //定义文档对象
Namespace namespace1=Namespace.getNamespace("qingdaodaxue") ; //定义青岛大学名字空间
Element student1=new Element("student"); //root的子元素
Element name1=new Element("name") ; //student的子元素
Element age1=new Element("age"); //..
Element sex1=new Element("sex"); //..
Element id1=new Element("id");//..
student1.setNamespace(namespace1) ; //增加节点以及子节点到 名字空间 无前缀
name1.setNamespace(namespace1); //...
age1.setNamespace(namespace1 ) ; //同上
sex1.setNamespace(namespace1 ) ;
id1.setNamespace(namespace1) ;
name1.setText("zhangsan") ; //同上
age1.setText("15") ;
sex1.setText("man") ;
id1.setText("1");
student1.addContent(name1) ;
student1.addContent(age1) ;
student1.addContent(sex1) ;
student1.addContent(id1);
Element student2=new Element("student");
Element name2=new Element("name") ;
Element age2=new Element("age");
Element sex2=new Element("sex");
Element id2=new Element("id");
Namespace namespace2=Namespace.getNamespace("qingdaokejidaxue");
student2.setNamespace(namespace2) ;
id2.setNamespace(namespace2);
age2.setNamespace(namespace2 ) ;
sex2.setNamespace(namespace2 ) ;
name2.setNamespace(namespace2) ;
name2.setText("lisi") ;
age2.setText("16") ;
sex2.setText("woman") ;
id2.setText("2");
student2.addContent(name2) ;
student2.addContent(age2) ;
student2.addContent(sex2) ;
student2.addContent(id2);
root.addContent(student1) ;
root.addContent(student2) ;
Format format=Format.getPrettyFormat() ;
format.setEncoding("gb2312") ;
XMLOutputter output=new XMLOutputter(format);
OutputStream fos=new FileOutputStream("d:/info.xml");
output.output(myDocument, fos) ;
fos.close() ;
%>
3、在上述xml文档中查询 namespace1 也就是 qingdaodaxue的这个名字空间 的内容输出各个子节点的内容 并将name的内容改为modify。
1、 xml文档的验证 DTD 我们经常使用XML来验证文档的合法性。
我们需要在xml的开头引入 <!DOCTYPE rootName SYSTEM "xxx.dtd"> 这里的PUBLIC 引入的是私有DTD也就是我们自己定义的 。我们平时使用这种即可 。
另一种是 <!DOCTYPE rootName PUBLIC ".........">这个是ISO标准的DTD ,是已经定义好了的 具体DTD 我们可以根据ISO的提供引入。
注意 <!DOCTYPE 之间不要有空格 。下面是代码 具体的xml和 dtd文件自己去定义吧。
<%@ page import="org.jdom2.*,org.jdom2.output.*,java.io.*,java.util.*" %> <% SAXBuilder builder=new SAXBuilder() ; //构建XML解析器 builder.setValidation(true) ; //设置解析器为验证DTD builder.build("d:/student.xml") ; //解析XML ,解析的时候会自动根据我们xml文件中的DOCTYPE声明的DTD文件来验证 if(builder.isValidating()) //检查解析结果 是否为true { out.print("验证通过!"); } %>
2、建立一个带名字空间的xml文档 。。。
<%
Element root=new Element("root"); //定义根元素
Document myDocument=new Document(root) ; //定义文档对象
Namespace namespace1=Namespace.getNamespace("qingdaodaxue") ; //定义青岛大学名字空间
Element student1=new Element("student"); //root的子元素
Element name1=new Element("name") ; //student的子元素
Element age1=new Element("age"); //..
Element sex1=new Element("sex"); //..
Element id1=new Element("id");//..
student1.setNamespace(namespace1) ; //增加节点以及子节点到 名字空间 无前缀
name1.setNamespace(namespace1); //...
age1.setNamespace(namespace1 ) ; //同上
sex1.setNamespace(namespace1 ) ;
id1.setNamespace(namespace1) ;
name1.setText("zhangsan") ; //同上
age1.setText("15") ;
sex1.setText("man") ;
id1.setText("1");
student1.addContent(name1) ;
student1.addContent(age1) ;
student1.addContent(sex1) ;
student1.addContent(id1);
Element student2=new Element("student");
Element name2=new Element("name") ;
Element age2=new Element("age");
Element sex2=new Element("sex");
Element id2=new Element("id");
Namespace namespace2=Namespace.getNamespace("qingdaokejidaxue");
student2.setNamespace(namespace2) ;
id2.setNamespace(namespace2);
age2.setNamespace(namespace2 ) ;
sex2.setNamespace(namespace2 ) ;
name2.setNamespace(namespace2) ;
name2.setText("lisi") ;
age2.setText("16") ;
sex2.setText("woman") ;
id2.setText("2");
student2.addContent(name2) ;
student2.addContent(age2) ;
student2.addContent(sex2) ;
student2.addContent(id2);
root.addContent(student1) ;
root.addContent(student2) ;
Format format=Format.getPrettyFormat() ;
format.setEncoding("gb2312") ;
XMLOutputter output=new XMLOutputter(format);
OutputStream fos=new FileOutputStream("d:/info.xml");
output.output(myDocument, fos) ;
fos.close() ;
%>
3、在上述xml文档中查询 namespace1 也就是 qingdaodaxue的这个名字空间 的内容输出各个子节点的内容 并将name的内容改为modify。
SAXBuilder builder=new SAXBuilder() ; Document myDocument=builder.build("d:/info.xml") ; List list=myDocument.getRootElement().getChildren() ; for(Object obj:list) { Element el=(Element)obj ; if(el.getNamespaceURI().equals("qingdaodaxue")) { List tem=el.getChildren() ; for(Object temObj:tem) { Element temEl=(Element)temObj ; out.print(temEl.getName()+":"+temEl.getText()+"<br>"); if(temEl.getName().equals("name")) { temEl.setText("modify") ; } } } } Format format=Format.getPrettyFormat() ; format.setEncoding("gb2312") ; XMLOutputter output=new XMLOutputter(format); OutputStream fos=new FileOutputStream("d:/info.xml"); output.output(myDocument, fos) ; fos.close() ;
相关文章推荐
- JDOM操作XML文档高级篇XML验证,创建带名字空间的xml, xml文档的修改
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- 用C#创建XML文档和读取并修改XML文档
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- c#环境XML文件创建、修改、删除、查找相关操作
- 创建可编辑的xml文档(之三)执行拖放操作
- Asp.Net XML操作基类(修改,删除,新增,创建)
- java xml jdom创建 修改 解析
- Oracle操作(解锁用户,修改密码,无密码登录,创建表空间,赋权)
- 使用 domj4 API 创建与修改 XML 文档
- 创建可编辑的xml文档(之四) 删除、改名、插入操作
- JAVA创建、读写XML文档(应用JDOM包)
- Linq to Xml (1) 创建和查询包含命名空间的XML文档
- 创建可编辑的xml文档(之四) 删除、改名、插入操作 YAOTIEBING [翻译]
- 创建、查询、修改带名称空间的 XML 文件的例子
- csdn 在c++ builder中,使用treeview实现对xml文档增加删除修改和查询等基本操作
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- 使用DOM创建和操作XML文档