`
whp0731
  • 浏览: 174776 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

xml 注意点

    博客分类:
  • XML
阅读更多


xml专题
需要解析的文件PEOPLE.xml

<?xml version="1.0"?>
<PEOPLE hello="world">
 <PERSON PERSONID="E01">
  <NAME>Tony Blair</NAME>
  <ADDRESS>10 Downing Street, London, UK</ADDRESS>
  <TEL>(061) 98765</TEL>
  <FAX>(061) 98765</FAX>
  <EMAIL>blair@everywhere.com</EMAIL>
 </PERSON>
 <PERSON PERSONID="E02">
  <NAME>Bill Clinton</NAME>
  <ADDRESS>White House, USA</ADDRESS>
  <TEL>(001) 6400 98765</TEL>
  <FAX>(001) 6400 98765</FAX>
  <EMAIL>bill@everywhere.com</EMAIL>
 </PERSON>
 <PERSON PERSONID="E03">
  <NAME>Tom Cruise</NAME>
  <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
  <TEL>(001) 4500 67859</TEL>
  <FAX>(001) 4500 67859</FAX>
  <EMAIL>cruise@everywhere.com</EMAIL>
 </PERSON>
 <PERSON PERSONID="E04">
  <NAME>Linda Goodman</NAME>
  <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
  <TEL>(061) 54 56789</TEL>
  <FAX>(061) 54 56789</FAX>
  <EMAIL>linda@everywhere.com</EMAIL>
 </PERSON>
</PEOPLE>



 

 

1、dom:document object model文档对象模型  IDL inteface description language
读、写


2、sax  simple aips for xml 解析的简单api 民间标准 基于事件处理 观察者模式 

如tomcat

jaxp:  java apis for xml parsing,对xml进行解析的java apis 本身用到了工厂方法
对于dom和sax来说,处理文档的过程
1)获得解析器工厂
2)获得具体的解析器实例
3)通过解析器对xml进行处理。

Dom步骤:
1)获得解析器工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
2)获得具体的解析器实例  
   DocumentBuilder builder=factory.newDocumentBuilder(); 
3)通过解析器实例来获得Doucument对象  Doucument对象代表整个xml文档,并不只代表根
Doucument对象又叫文档的根节点,
而整个xml第一个节点叫根元素节点(如PERSON节点)。
Document doc = builder.parse(new File("people.xml")); 

4)

NodeList list = doc.getElementsByTagName("PERSON");    
for (int i=0;i<list.getLength();i++){   
               Element element=(Element)list.item(i);            
    System.out.print("NAME:" + element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue());    
    System.out.println("ADDRESS:" + doc.getElementsByTagName("ADDRESS").item(0).getFirstChild().getNodeValue());    
   }    

 
SAX步骤:
1)获得解析器工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
2)获得具体的解析器实例  
   SAXParser parser=factory.newSAXParser(); 
3)开始解析文档

parser.parser(new File(''people.xml")),new DefaultHandler());

class MyHandler extends DefaultHander
{  @Override
   public void startDocument() throws SAXException
   {System.out.println("+++++++++Start Document++++++++")}

 @Override
   public void endDocument() throws SAXException
   {System.out.println("+++++++++End Document++++++++")}
 
@Override//输出每个元素的标识如“PERSON”;“NAME”;“ADDRESS”
   public void startElement(String url,String localName,String name) throws SAXException
   {System.out.println("start element name"+name)}

@Override//输入每个元素对应的值。
   public void characters(char[] ch,int start,int length) throws SAXException
   {String content= new String(ch,start,lenth);
   System.out.println("element content"+content)
   }
}
  
3、解析后,通过递归原样输出XML文件
package com.observer2;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DOMTreeTest
{
 public static void main(String[] args) throws Exception
 {
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  
  DocumentBuilder builder = factory.newDocumentBuilder();
  
  Document document = builder.parse(new File("People.xml"));
  
  Element root = document.getDocumentElement();
  
  parseXML(root);
  
 }
 
 public static void parseXML(Element e)
 {
  System.out.print("<" + e.getTagName());
  
  NamedNodeMap map = e.getAttributes();
  
  if(null != map)
  {
   for(int i = 0 ; i < map.getLength() ; ++i)
   {
    Node node = map.item(i);
    
    System.out.print(" " + node.getNodeName() + "=\"" + node.getNodeValue() + "\"");
   }
   
   System.out.print(">");
  }
  
  NodeList list = e.getChildNodes();
  
  for(int i = 0 ;i  < list.getLength() ; ++i)
  {
   Node node = list.item(i);
   
   //表明该节点是一个元素
   if(Element.ELEMENT_NODE == node.getNodeType())
   {
    parseXML((Element)node);
   }
   else
   {
    System.out.print(node.getNodeValue());
   }
  }
  
  System.out.print("</" + e.getNodeName() + ">");
  
 }

}

 

开发时jdom和dom4j比较多

 

附件为包含了“详细原代码”。

  • com.rar (17.4 KB)
  • 下载次数: 3
分享到:
评论

相关推荐

    XML部分的知识点

    XML 部分的知识点 XML(Extensible Markup Language),是一种标记语言,用于存储和传输数据。XML 的解析技术有多种,常见的有 DOM、SAX、STAX 等。 DOM(Document Object Model),是 XML 解析技术之一。它将整个...

    andxml xml解密工具

    andxml汉化版是一个xml...注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。例如AndXml对"&lt;b&gt;..&lt;/b&gt;" 2、AndXml汉化arrays.xml会出现在汉化的文本之前加入“item|”请手动删除。另一款不会出现!

    matlab读取XML,XML转换为matlab

    注意事项 - XML文档必须符合语法规则,否则`xmlread`可能会失败。 - 大型XML文件可能占用大量内存,处理时需考虑性能优化。 - XPath表达式需要正确编写,否则可能找不到预期的节点。 在实际使用中,结合Matlab的...

    xml.rar_XML c语言_c语言 xml_resolver_xml解析 c_解析xml

    解析XML的过程中,需要注意以下几个关键点: 1. **语法验证**:确保XML文档符合W3C标准,包括正确的嵌套、关闭标签、属性值引号等。 2. **命名规则**:XML元素和属性名必须遵循一定的命名规则,不能以数字开头,不...

    Unity实现读取XML和数据写入到XML

    需要注意的是,为了确保数据安全,写入操作应该在合适的时机(如游戏暂停或退出时)进行,并处理可能出现的异常情况。 6. **性能优化**:在处理大型XML文件时,考虑使用流式读写(`FileStream`)以减少内存占用。...

    XML_xml_

    在处理XML时,还需要注意编码问题,通常使用UTF-8编码以支持多种语言字符。同时,XML有严格的语法要求,如元素必须正确关闭,属性值必须加引号等,违反这些规则可能导致解析错误。 总之,XML作为数据描述和交换的...

    tinyXMl解析XMl文件

    在实际使用中,需要注意XML的语法规则,比如元素名必须以字母或下划线开头,属性值必须用引号包围等。此外,TinyXML并不支持XML命名空间,对于大型复杂XML文件可能不够用,这时你可能需要考虑使用更强大的库如pugi...

    Xml完全操作 XML增删改查

    注意,修改后需要保存更改,这通常通过DOM的`Transformer`类实现。 查询XML内容,XPath是最常用的方法。XPath表达式可以选取满足特定条件的节点,如选取所有`&lt;item&gt;`元素:`//item`,或者选取具有特定属性的元素:`...

    QT使用TinyXML开源库解析XML文件

    QT框架是广受欢迎的开源...不过,请注意,尽管TinyXML库简单易用,但它并不支持XPath查询和XML Schema验证,如果你的项目需要这些高级功能,可能需要考虑使用更强大的库,如Qt自带的QDomDocument或QtXmlPatterns模块。

    PB解析XML字符串 把XML 变为数据窗口

    在学习和使用这些源码时,需要注意理解每一步的目的和实现方式,以便在自己的项目中灵活应用。 标签“PB XML”表明这是关于PowerBuilder处理XML数据的主题,如果你需要深入学习,可以查阅PowerBuilder的相关文档,...

    xml转对象封装的简单与复杂xml的转化写法

    标题提到的"xml转对象封装的简单与复杂xml的转化写法"主要涉及以下知识点: 1. **JDOM库**:JDOM是Java Document Object Model的缩写,它提供了一种在内存中表示XML文档的方式,通过创建SAXBuilder或DOMBuilder实例...

    Indesign置入式xml排版注意事项

    以下是一些关键知识点,帮助你更好地理解和执行Indesign中的XML排版: 1. **XML的基本概念**: XML(Extensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它通过标签来定义元素和属性,使数据...

    PB 解析XML (代码案例)

    10. **性能优化**:处理大量XML数据时,要注意性能优化,例如,合理使用缓存,避免不必要的遍历操作,以及选择合适的解析方式(SAX或DOM)。 通过以上步骤和知识点,开发者能够在PowerBuilder环境中有效地读取、...

    XML使用注意事项.ppt

    详细讲述了XML数据库的使用注意事项

    在web.xml中引入其他xml配置文件的步骤

    ### 在web.xml中引入其他XML配置文件的步骤 在Java Web开发中,`web.xml`作为Web应用...需要注意的是,正确地处理可能出现的错误对于保证系统的稳定运行至关重要。希望本文能帮助开发者们更好地理解和运用这一技术。

    Csharp读写XML文件

    在.NET框架中,C#是一种常用的...在实际应用中,还需要注意错误处理、文件锁定等问题,确保代码的健壮性。同时,根据具体需求,可以选择合适的XML处理方式,如DOM、SAX或LINQ to XML,以达到最佳性能和易用性的平衡。

    LabVIEW XML-RPC

    以下是关于LabVIEW XML-RPC的详细知识点: 1. **XML-RPC简介**: - XML-RPC(XML Remote Procedure Call)是一种简单的基于HTTP协议的远程调用方法,使用XML作为数据传输格式。 - 它允许客户端(如LabVIEW应用)...

    MFC保存控件数据到xml及读取xml数据到控件

    4. **注意事项**: - 确保正确处理可能出现的错误,如文件读写失败、XML解析错误等。 - 考虑性能优化,避免在大量控件时的性能瓶颈。 - 对于复杂的控件,可能需要自定义序列化和反序列化逻辑,因为默认的控件属性...

    Xml Viewer (xml文档修改器)

    9. **安全考虑**:在处理XML文件时,需要注意防止XXE(XML External Entity)攻击,这是一种利用XML解析器的特性来获取服务器敏感信息的攻击方式。好的XML Viewer会对此类风险有所防范。 10. **XML数据绑定**:在...

Global site tag (gtag.js) - Google Analytics