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比较多
附件为包含了“详细原代码”。
分享到:
相关推荐
XML 部分的知识点 XML(Extensible Markup Language),是一种标记语言,用于存储和传输数据。XML 的解析技术有多种,常见的有 DOM、SAX、STAX 等。 DOM(Document Object Model),是 XML 解析技术之一。它将整个...
andxml汉化版是一个xml...注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。例如AndXml对"<b>..</b>" 2、AndXml汉化arrays.xml会出现在汉化的文本之前加入“item|”请手动删除。另一款不会出现!
注意事项 - XML文档必须符合语法规则,否则`xmlread`可能会失败。 - 大型XML文件可能占用大量内存,处理时需考虑性能优化。 - XPath表达式需要正确编写,否则可能找不到预期的节点。 在实际使用中,结合Matlab的...
解析XML的过程中,需要注意以下几个关键点: 1. **语法验证**:确保XML文档符合W3C标准,包括正确的嵌套、关闭标签、属性值引号等。 2. **命名规则**:XML元素和属性名必须遵循一定的命名规则,不能以数字开头,不...
需要注意的是,为了确保数据安全,写入操作应该在合适的时机(如游戏暂停或退出时)进行,并处理可能出现的异常情况。 6. **性能优化**:在处理大型XML文件时,考虑使用流式读写(`FileStream`)以减少内存占用。...
在处理XML时,还需要注意编码问题,通常使用UTF-8编码以支持多种语言字符。同时,XML有严格的语法要求,如元素必须正确关闭,属性值必须加引号等,违反这些规则可能导致解析错误。 总之,XML作为数据描述和交换的...
在实际使用中,需要注意XML的语法规则,比如元素名必须以字母或下划线开头,属性值必须用引号包围等。此外,TinyXML并不支持XML命名空间,对于大型复杂XML文件可能不够用,这时你可能需要考虑使用更强大的库如pugi...
注意,修改后需要保存更改,这通常通过DOM的`Transformer`类实现。 查询XML内容,XPath是最常用的方法。XPath表达式可以选取满足特定条件的节点,如选取所有`<item>`元素:`//item`,或者选取具有特定属性的元素:`...
QT框架是广受欢迎的开源...不过,请注意,尽管TinyXML库简单易用,但它并不支持XPath查询和XML Schema验证,如果你的项目需要这些高级功能,可能需要考虑使用更强大的库,如Qt自带的QDomDocument或QtXmlPatterns模块。
在学习和使用这些源码时,需要注意理解每一步的目的和实现方式,以便在自己的项目中灵活应用。 标签“PB XML”表明这是关于PowerBuilder处理XML数据的主题,如果你需要深入学习,可以查阅PowerBuilder的相关文档,...
标题提到的"xml转对象封装的简单与复杂xml的转化写法"主要涉及以下知识点: 1. **JDOM库**:JDOM是Java Document Object Model的缩写,它提供了一种在内存中表示XML文档的方式,通过创建SAXBuilder或DOMBuilder实例...
以下是一些关键知识点,帮助你更好地理解和执行Indesign中的XML排版: 1. **XML的基本概念**: XML(Extensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它通过标签来定义元素和属性,使数据...
10. **性能优化**:处理大量XML数据时,要注意性能优化,例如,合理使用缓存,避免不必要的遍历操作,以及选择合适的解析方式(SAX或DOM)。 通过以上步骤和知识点,开发者能够在PowerBuilder环境中有效地读取、...
详细讲述了XML数据库的使用注意事项
### 在web.xml中引入其他XML配置文件的步骤 在Java Web开发中,`web.xml`作为Web应用...需要注意的是,正确地处理可能出现的错误对于保证系统的稳定运行至关重要。希望本文能帮助开发者们更好地理解和运用这一技术。
在.NET框架中,C#是一种常用的...在实际应用中,还需要注意错误处理、文件锁定等问题,确保代码的健壮性。同时,根据具体需求,可以选择合适的XML处理方式,如DOM、SAX或LINQ to XML,以达到最佳性能和易用性的平衡。
以下是关于LabVIEW XML-RPC的详细知识点: 1. **XML-RPC简介**: - XML-RPC(XML Remote Procedure Call)是一种简单的基于HTTP协议的远程调用方法,使用XML作为数据传输格式。 - 它允许客户端(如LabVIEW应用)...
4. **注意事项**: - 确保正确处理可能出现的错误,如文件读写失败、XML解析错误等。 - 考虑性能优化,避免在大量控件时的性能瓶颈。 - 对于复杂的控件,可能需要自定义序列化和反序列化逻辑,因为默认的控件属性...
9. **安全考虑**:在处理XML文件时,需要注意防止XXE(XML External Entity)攻击,这是一种利用XML解析器的特性来获取服务器敏感信息的攻击方式。好的XML Viewer会对此类风险有所防范。 10. **XML数据绑定**:在...