`
longzhun
  • 浏览: 372047 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xml解析(超全)---(五)

    博客分类:
  • XML
阅读更多



 StringBuffer sb=new StringBuffer("<?xml version=\"1.0\" encoding=\"gb2312\"?>");
  sb.append("<users>");
  sb.append("<user id=\"1\">");
  sb.append("<name>龙准</name>");
  sb.append("<age>25</age>");
  sb.append("</user>");
  sb.append("<user id=\"2\">");
  sb.append("<name>廖丽</name>");
  sb.append("<age>21</age>");
  sb.append("</user>");
  sb.append("</users>");
  Document doc=null;
  SAXBuilder builder=new SAXBuilder();
  //为文档增加dtd验证
         //Builder.setFeature(“http://xml.org/sax/features/validation”;,ture);
  //为文档增加schema验证
   //Builder.setFeature(“http://apache.org/xml/features/validation/schema”;,true);
 //导入schema文件
 Builder.setPropertity(“http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation”;,schema)
  try {
   doc=builder.build(new StringReader(sb.toString()));

   //得到根节点
   Element element=doc.getRootElement();
   //得到所有节点
   List list=element.getChildren();
   
   System.out.println("某班共有"+list.size()+"个学生");
   
   for(Iterator it=list.iterator();it.hasNext();){
    Element user=(Element)it.next();
    String id=user.getAttributeValue("id");
    String name=user.getChildText("name");
    String age=user.getChildText("age");
    
    System.out.println("学生"+id+"  ");
    System.out.println("姓名:"+name+"   年龄:"+age);
    
   }
   
  } catch (JDOMException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
输出结果:
某班共有2个学生
学生1 
姓名:龙准   年龄:25
学生2 
姓名:廖丽   年龄:21

新增节点:

//新增节点
   Element newElement=new Element("user");
   newElement.setAttribute("id","3");
   newElement.addContent(new Element("name").setText("嘻哈"));
   newElement.addContent(new Element("age").setText("23"));
    
   element.addContent(newElement);
   //删除节点
   list.remove(2);     //删除第三个子元素
   
   element.removeChildren("user");  //删除名为user的子元素

//生成xml文档
  Element root=new Element("student-info");
  Element stu=new Element("student");
  stu.addContent(new Element("number").setText("001"));
  stu.addContent(new Element("name").setText("中国"));
  stu.addContent(new Element("age").setText("60"));
  root.addContent(stu);
  Document doc=new Document(root);
  
  Format format=Format.getCompactFormat();
  format.setEncoding("gb2312");
  format.setIndent("   ");//设置xml文件的缩进为4个空格
  XMLOutputter op=new XMLOutputter(format);
  
  try {
   op.output(doc, new FileOutputStream("d://student22.xml"));
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
//生成xml文档2
Document document=new Document();
  //为xml文档添加处理指令
  ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type='text/xsl' href=test.xsl" );
  document.addContent(pi);
  //添加名称空间
  Namespace namespace=Namespace.getNamespace("http://www.apache.org");
  Namespace namespace2=Namespace.getNamespace("other", "http://www.w3c.org");
  //创建带有名称空间的根元素
  Element root1=new Element("student-info",namespace);
  
  root1.addNamespaceDeclaration(namespace2);
  
  Element stu=new Element("student");
  stu.setAttribute("id","001");
  stu.addContent(new Text("第一个学生"));
  stu.addContent(new Element("name").setText("ss"));
  stu.addContent(new Element("age").setText("24"));
  
  Element stu2=new Element("student");
  stu2.setAttribute("id","002");
  stu2.addContent(new Text("第二个学生"));
  stu2.addContent(new Element("name").setText("dd"));
  stu2.addContent(new Element("age").setText("22"));
  
  root1.addContent(stu);
  root1.addContent(stu2);
  
  document.addContent(root1);
  
  Format fm=Format.getCompactFormat();
  fm.setEncoding("gb2312");
  fm.setIndent("    ");
  XMLOutputter xmlout=new XMLOutputter(fm);
  
  try {
   xmlout.output(document, new FileOutputStream("d://3.xml"));
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

JDOM+Xpath读取,修改xml
SAXBuilder builder=new SAXBuilder();
  try {
   Document doc=builder.build(new File("d://user2.xml"));
   
   XPath userPath=XPath.newInstance("//user");
   List userList=userPath.selectNodes(doc);
   System.out.println("某班共有"+userList.size()+"个学生");
   for(Iterator it=userList.iterator();it.hasNext();){
    Element userElement=(Element)it.next();
    String id=userElement.getAttributeValue("id");
    String name=userElement.getChildText("name");
    //修改龙准的年龄
    if(name.equals("龙准")){
     userElement.getChild("age").setText("26");
    }
    String age=userElement.getChild("age").getTextTrim();
    System.out.println("学生  "+id);
    System.out.println("姓名:"+name+"  年龄:"+age);
   }
   //保存到硬盘
   Format fm=Format.getCompactFormat();
   fm.setEncoding("gb2312");
   fm.setIndent("    ");
   XMLOutputter out=new XMLOutputter(fm);
   out.output(doc, new FileOutputStream("d://user2.xml"));
   
  } catch (JDOMException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

  • 大小: 7.9 KB
分享到:
评论

相关推荐

    xml教程------

    XML(eXtensible Markup Language)是一种用于标记数据的语言,它是HTML(超文本标记语言)的一个扩展,旨在传输和存储数据。本教程将深入探讨XML的基本概念、语法、解析方式以及在实际应用中的作用。 XML的设计...

    XML资料大全--基础 语言 笔记课件

    4. XML解析: - DOM(Document Object Model):将整个XML文档加载到内存中,形成一棵节点树,便于遍历和操作。 - SAX(Simple API for XML):事件驱动的解析方式,逐行读取XML,只在需要时处理特定事件,适用于...

    XML基础教程源码-code

    在提供的"范春梅-XML基础教程源码-code"中,你可以找到关于XML处理的实例代码,可能包括创建、解析、修改XML文档等操作。通过这些源码,你可以更好地理解XML在实际开发中的应用。 总之,XML作为一种数据交换和存储...

    Java中四种XML解析技术

    Java中的XML解析技术是开发过程中不可或缺的一部分,尤其是在处理结构化数据时。XML(eXtensible Markup Language)因其可扩展性和灵活性,常被用于存储和交换数据。在Java中,有四种主要的XML解析技术,它们分别是...

    XML---编程宝典

    1. **解析器**:XML解析器读取XML文档并将其转化为内存中的对象模型,如DOM(文档对象模型)或SAX(简单API for XML)。 2. **DOM**:将整个XML文档加载到内存,形成一个树形结构,方便遍历和操作。 3. **SAX**:...

    oracle过程解析XML,支持超4000

    oracle过程解析XML,支持超4000,并很方便的 . 出结果 oracle过程解析XML,支持超4000 oracle过程解析XML,支持超4000

    iPhone IOS XML解析源代码

    本资源"iPhone iOS XML解析源代码"提供了一个深入学习和比较XML解析技术的实例,包含两种不同的解析方法,旨在帮助开发者了解它们的性能差异。 首先,我们来探讨第一种解析方式:NSXMLParser。这是Apple提供的内置...

    在线解析HTTP XML文件

    HTTP XML文件解析是网络通信中常见的一种技术,它结合了HTTP协议和XML(可扩展标记语言)的数据格式,广泛应用于Web服务、API交互以及数据交换等领域。本文将深入探讨在线解析HTTP XML文件的相关知识点,包括HTTP...

    XML解析 XML操作

    在实际应用中,根据需求和性能考虑,可以选择合适的XML解析库和方法。例如,如果需要频繁修改XML文档,DOM可能更适合;如果处理大型XML文件,SAX或StAX会是更好的选择。结合这些库,可以高效地进行XML的读写、查询和...

    C++实现http的post发送接收数据以及xml解析

    在IT行业中,网络通信是至关重要的部分,而HTTP...理解HTTP协议的工作原理,掌握WinInet的API用法,以及熟悉XML解析库的使用,对于开发涉及网络通信的C++应用程序至关重要。通过实践,你可以更好地理解和掌握这些技能。

    pugixml, 带有XPath支持的C++的轻量级简单和快速XML解析器.zip

    pugixml, 带有XPath支持的C++的轻量级简单和快速XML解析器 pugixml pugixml是一个 C++ XML处理库,由具有丰富遍历/修改功能的DOM和基于XML的超快速XML解析器组成,用于构造XML树和复杂的数据驱动树查询的XPath 1.0...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    XML 解析器原理及性能比较 XML 解析器是指将 XML 文档转换为计算机可以理解的格式的软件组件。常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和...

    xml-5-lucky-draw.rar_lucky

    2. **数据解析**:HTML5页面通过JavaScript来解析XML文件,将数据加载到内存中,并显示在界面上。DOM(Document Object Model)API是用于处理XML和HTML文档的标准接口,可用于遍历和操作XML节点。 3. **用户界面**...

    javascript经典特效---XML超酷页面效果一.rar

    2. **解析XML**:获取到XML响应后,我们可以使用DOM方法如getElementsByTagName、getElementById、getAttribute等来查找和提取XML节点信息。例如,获取所有`&lt;effect&gt;`标签: ```javascript var effects = xmlDoc....

    全国省市地超全XML文件

    可以使用XML解析库,如Python的`xml.etree.ElementTree`,Java的`javax.xml.parsers.DocumentBuilderFactory`,或者JavaScript的`DOMParser`。这些库提供了解析XML文档,查找特定元素,以及提取和修改数据的功能。 ...

    XML实用大全(绝对经典)

    - XML解析器负责解析XML文档,确保其符合XML标准。 - **1.3.3 浏览器和其他工具** - 大多数现代浏览器支持XML,并能直接显示或通过样式表呈现XML文档。 - **1.3.4 处理过程总结** - XML文档的处理通常涉及创建、...

    CSS、DHTML、XMLDOM、T-SQL、XPath、正则表达式等.chm文件帮助文档

    这篇文档将围绕着标题中提到的六个关键技术领域——CSS(层叠样式表)、DHTML(动态超文本标记语言)、XMLDOM(XML文档对象模型)、T-SQL(Transact-SQL)、XPath(XML路径语言)以及正则表达式,展开详细的阐述。...

    无废话XML---劳虎

    7. **解析与验证**:XML文档可以被解析器读取,解析器可以是DOM(文档对象模型)、SAX(简单API for XML)或StAX(流式API for XML)。验证器则检查文档是否符合其DTD或Schema。 8. **XPath与XSLT**:XPath是查询...

    超全面javaweb第4天- 20 xml的解析的简介

    超全面javaweb第4天-_20_xml的解析的简介

Global site tag (gtag.js) - Google Analytics