读取xml:
Document document = XmlUtil.getDocument( filePath );
public static Document getDocument( String filePath ) throws ParserConfigurationException, SAXException,
IOException {
// 需要添加判断参数为空操作
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
builder = factory.newDocumentBuilder();
return builder.parse( new File( filePath ) );
}
读取单个节点:
public static Node getSingleNode( Node contextNode, String xPath ) throws TransformerException,
XPathExpressionException {
// 需要添加判断参数为空操作
XPathFactory factory = XPathFactory.newInstance();
XPath path = factory.newXPath();
NodeList nodeList = (NodeList) path.evaluate( xPath, contextNode, XPathConstants.NODESET );
return nodeList.item( 0 );
}
读取单个节点list:
NodeList groupingList = XmlUtil.getNodeList( document, "//xml根节点/page[@id='" + pageNo+ "']/grouping" );
每一层节点都可以用[@属性key='属性值']的形式传入属性参数来读取。
public static NodeList getNodeList( Node contextNode, String xPath ) throws XPathExpressionException,
ParserConfigurationException, SAXException, IOException, TransformerException {
// 需要添加判断参数为空操作
XPathFactory factory = XPathFactory.newInstance();
XPath path = factory.newXPath();
NodeList nodeList = (NodeList) path.evaluate( xPath, contextNode, XPathConstants.NODESET );
return nodeList;
}
从指定node取得属性:
Node rowNode = nodeList.item( i );
String rowNo = XmlUtil.getAttribute( rowNode, "row" );
public static String getAttribute( Node contextNode, String attributeName ) {
// 需要添加判断参数为空操作
String target = attributeName.toUpperCase();
NamedNodeMap attributes = contextNode.getAttributes();
for ( int i = 0; i < attributes.getLength(); i++ ) {
if ( target.equals( attributes.item( i ).getNodeName().toUpperCase() ) ) {
return attributes.item( i ).getNodeValue();
}
}
return null;
}
从节点list取得标签内text内容:
public static String getTextContentsByName( NodeList nodeList, String nodeName ) {
// 需要添加判断参数为空操作
String textContents = StringUtil.EMPTY;
for ( int i = 0; i < nodeList.getLength(); i++ ) {
Node node = nodeList.item( i );
if ( node.getNodeName().equals( nodeName ) ) {
textContents = node.getTextContent();
break;
}
}
return textContents;
}
分享到:
相关推荐
标题“sax解析xml本地读取xml”指的是使用SAX解析器来读取和解析存储在本地文件系统中的XML文件。这种方式适用于处理那些无法一次性加载到内存中的大型XML文档,或者对于内存有限的环境。 SAX解析的基本工作原理...
SAX解析的核心思想是读取XML文档时,每当遇到一个元素、属性、文本等结构,都会触发一个相应的事件,然后通过回调函数来处理这些事件。这种方式非常适合处理大型XML文档,因为它不需要一次性将整个文档加载到内存中...
2. **SAX解析**:SAX是一种事件驱动的解析方式,它逐行读取XML文档,遇到元素、属性等时触发相应的事件处理器。这种方式节省内存,适合处理大型XML文件。"sax_xml sax_解析_xml"标签表明了本压缩包包含使用SAX解析...
QT使用SAX读取xml高效-快速.rar SAX(Simple API for XML) 如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取...
SAX解析器按照XML文档的顺序逐个读取元素,当遇到元素开始、结束、属性、文本等事件时,会触发相应的回调函数。开发者需要实现`DefaultHandler`接口或其子类,并重写这些回调方法来处理解析过程中的事件。 二、设置...
本文将重点讨论SAX解析器,并通过描述中的"test_sax.rar"压缩包中的示例,讲解如何使用SAX解析器在Visual Studio 20(VS20)环境下读取XML文档。 SAX解析器是一种基于事件驱动的解析方式,它不会一次性加载整个XML...
本文将深入探讨如何使用SAX(Simple API for XML)解析器来读取XML文件,这是一种基于事件驱动的解析方式,非常适合处理大型或内存受限的环境。 SAX解析器不同于DOM(Document Object Model)解析器,DOM会将整个...
SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、结束文档、开始元素、结束元素等。开发者需要定义一个ContentHandler类来处理这些事件,当解析器遇到相应的XML元素时,就会调用ContentHandler中的方法...
2. **创建SAX解析器实例**:通过`XercesDOMParser`类创建SAX解析器对象,这个对象会负责读取XML文件并触发事件。 3. **设置处理器**:实现`DefaultHandler`或自定义的处理器类,覆盖其回调方法,如`startElement`、...
Java中XML配置文件的读取(SAX) XML配置文件是Java开发中常用的配置文件格式,特别是在J2EE项目中。XML文件可以存储配置信息,并且易于维护和修改。然而,在Java中读取XML配置文件成了一个需要解决的问题。本文将...
Java作为一种强大的编程语言,提供了多种方式来读取和操作XML文档,其中包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。本教程将重点介绍如何使用SAXReader在Java中...
在SAX解析中,XML文档被读取一次,遇到每个元素、属性或其他结构时,会触发相应的回调函数。这种方式非常适合处理大型XML文件,因为不需要一次性加载整个文档到内存中。下面将详细介绍SAX解析的工作原理、优点以及...
SAX解析器在处理大型XML文件时更高效,因为它只在需要时读取数据,从而减少了内存消耗。 本示例中,"SAX_XML.rar"包含了一个关于如何使用SAX解析XML的项目。"SaxParsePage.class"是已经编译好的Java类文件,用于...
本文将深入探讨C++中进行XML读取操作的库,并结合提供的“ReadXml”工程源码和动态链接库,解析其核心概念和使用方法。 一、C++中的XML库选择 C++中处理XML的库主要有以下几种: 1. TinyXML:这是一个小型、易于...
- SAX是一种事件驱动的解析器,它逐行读取XML文档,遇到元素、属性等时触发相应的事件回调。这种方式内存消耗小,适用于处理大型XML文件。 - Android中的SAX解析器实现为`org.xml.sax.helpers.DefaultHandler`,...
标题中提到的"XML通过SAX解析为JSON格式"是指使用SAX解析器来读取XML文档,并将其转换成等效的JSON对象。SAX解析器以流式方式处理XML,当遇到文档的不同部分(如开始标签、结束标签、文本节点等)时,会触发相应的...
SAX解析器逐行读取XML文件,当遇到XML文档的各个元素、属性等结构时,会触发相应的事件回调,如开始文档、结束文档、开始元素、结束元素等。程序通过实现这些事件接口,对解析过程进行控制,从而实现对XML内容的处理...
压缩包里面有两个文件:SAX.java和SAXparse.java 用来解析大于100M的xml文件,SAX读取xml不同于DOM方式,DOM方式在解析xml前需要全部加载xml文件,当xml文件很大时,就会出现内存不足的问题,而SAX则是逐行读取xml...
SAX不存储整个XML文档于内存中,而是逐行读取,这使得它在处理大型XML文件时比DOM(Document Object Model)更高效。它通过调用预先定义好的回调方法来解析XML文档,这些方法如`startElement`、`endElement`和`...