⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysaxpa.ja

📁 java操作xml文件的各种代码
💻 JA
📖 第 1 页 / 共 2 页
字号:
			namespaceURI = "没有命名空间";
		}

		System.out.println(	", 命名空间: " + namespaceURI +
							", 新名称: " + qName + ".");

		//打印属性
		for(int i=0; i<atts.getLength(); i++)
			System.out.println(	"\t属性名称: " + atts.getLocalName(i) +
								" = " + atts.getValue(i) + ".");
	}


    /**
     *接受元素结束的调用
     *
     *<p>
     *SAX分析器会在XML文件中遇到的每一个元素的结尾调用此函数。
     *每一个{@link #startElement startElement}事件一定会有一
     *个相对应的{@link #startElement startElement}事件
     *</p>
     * @param uri 命名空间的统一资源标识符。当该元素没有名称
     *空间时或是分析器没有启动命名空间功能时,此字符串就会为空
     * @param localName 没有前置字符串的元素名称。如果分析器没
     *有启动命名空间功能时,此字符串为空。
     * @param qName 完整的元素名称。如果新名称如法取得时,此
     *字符串为空。
     * @param atts  附加在这个元素上的全部属性。如果该元素没
     *有任何属性,则会返回一个空的Attributes对象。注意,不是
     *空(null)。
     *
     * @exception org.xml.sax.SAXException 任何的SAX异常,有
     *可能是封装过的其他异常处理
     */
    public void endElement (String namespaceURI, String localName,
			    String qName)
	throws SAXException{
		System.out.print("元素结束: " + localName);

		if(namespaceURI.equals("")) {
			namespaceURI = "没有命名空间";
		}

		System.out.println(	", 命名空间: " + namespaceURI +
							", 新名称: " + qName + ".");
	}


    /**
     *接受字符数据调用
     *
     *<p>
     *分析器会调用这个函数来回报在元素里的一块块字符数据。SAX
     *分析器会返回在一个在同一区块里的连续字符串。
     *</p>
     *
     *<p>
     *要注意的是,千万不要去读取超过范围的字符串,SAX分析器对此
     *不做任何保证。
     *</p>
     *
     * @param ch 从XML文件中取得的字符
     * @param start 有效字符在阵列中的开始位置
     * @param length 有效字符的长度
     * @exception org.xml.sax.SAXException 任何的SAX异常,有
     *可能是封装过的其他异常处理
     * @see #ignorableWhitespace
     * @see org.xml.sax.Locator
     */
    public void characters (char ch[], int start, int length)
	throws SAXException{

		String charData = new String(ch, start, length);
		System.out.println("字符数据: \"" + charData + "\"");
	}


    /**
     *接受在元素的内容里可忽略的空格调用
     *<p>
     *一个可验证的分析器一定要使用这个函数来回报出现在元素内
     *容中的可忽略空格符,参见W3C XML 1.0 recommendation,
     *的第2.10小节。至於不具验证功能的分析器则不在此限,可以
     *依照其设计的方法来决定是否使用此函数。
     *</p>
     *
     *<p>
     * SAX分析器可以把连续的空白在一次调用传入程序里,也可以
     *分成多个调用来传入程序。唯一的限制就是一次的调用理所传
     *回的空格符一定要位在同一个实体里,如果要知道目前的空
     *白是属於哪一个实体的,可以使用Locator对象来提供这些讯息。
     *</p>
     *
     *<p>
     *和characters()一样,不要读取超出限定范围之外的数据
     *</p>
     *
     * @param ch 从XML文件中取得的字符
     * @param start 空格符在阵列中的开始位置
     * @param length 空格符的长度
     * @exception org.xml.sax.SAXException 任何的SAX异常,有
     *可能是封装过的其他异常处理
     * @see #characters
     */
    public void ignorableWhitespace (char ch[], int start, int length)
	throws SAXException{

		String whiteSpace = new String(ch, start, length);
		System.out.println("空格符: \"" + whiteSpace + "\"");
	}


    /**
     *接受处理命令(process instruction)的调用
     *
     *<p>
     *每次遇到处理命令是,分析器就会调用一次这个函数,而且它
     *们有可能会出现在文件的主要元素(root)之前。
     *</p>
     *
     * @param target 处理命令的目标(target).
     * @param data  处理命令的数据,如果没有任何数据就会返回
     *空(null),不过这些数据并不包含那些目标和数据间的空白。
     * @exception  org.xml.sax.SAXException  任何的SAX异常,
     *有可能是封装过的其他异常处理
     */
    public void processingInstruction (String target, String data)
	throws SAXException{
		System.out.println("处理命令  目标(target):" + target
		                   + " 和其数据(data):" + data);
	}


    /**
     *接受被忽略的实体参照调用
     *
     *<p>
     *每次分析器忽略了一个实体时,就会调用此函数。
     *</p>
     *
     * @param name 被忽略的实体名称
     * @exception  org.xml.sax.SAXException  任何的SAX异常,
     *有可能是封装过的其他异常处理
     */
    public void skippedEntity (String name)
	throws SAXException{
		System.out.println("忽略的实体: " + name);
	}
}// :) MyContentHandler


/**
 *<code>MyErrorHandler</code>实做<code>org.xml.sax.
 *ErrorHandler</code>界面,并且提供提供相关的回调方法。
 *所有在分析XML文件时所遇到的问题都会由这些函数传入。
 */

class MyErrorHandler implements ErrorHandler {
    /**
     *接受警告调用
     *<p>
     *一般来说,SAX分析器会使用这个函数来回报不属于XML 1.0
     *Recommendation中的error和fatal error的状况。这个函数默
     *认的处理方事就是不做任何事。
     *</p>
     * @param exception 用SAXParseExceptoin所封装起来的警告
     * @exception  org.xml.sax.SAXException  任何的SAX异常,
     *有可能是封装过的其他异常处理
     * @see org.xml.sax.SAXParseException
     */
    public void warning (SAXParseException e)
	throws SAXException {
		
		System.out.println(	
			"----分析警告----\n" +
			"    发生位置:\t\t第" + e.getLineNumber() + "行, " +	
			    "第" + e.getColumnNumber() + "字\n" +
			"    系统标识符:\t" + e.getSystemId() + "\n" +
			"    公用标识符:\t" + e.getPublicId() + "\n" +
			"    错误消息:\t\t" + e.getMessage()
		);		
		throw new SAXException("遇到警告.", e);
	}

    /**
     *接受可恢复的错误调用
     *
     *<p>
     *这个函数负责所有和XML 1.0 Recommendation的section 1.2
     *里所定义的"error"状况。通常都是在验证的过程里,有某些
     *XML的限制被违反了,但是还是可以继续分析下去的情况。
     *</p>
     * @param exception 用SAXParseExceptoin所封装起来的警告
     * @exception  org.xml.sax.SAXException  任何的SAX异常,
     *有可能是封装过的其他异常处理
     * @see org.xml.sax.SAXParseException
     */
    public void error (SAXParseException e)
	throws SAXException{
		
		System.out.println(	
			"----可恢复的分析错误----\n" +
			"    发生位置:\t\t第" + e.getLineNumber() + "行, " +	
			    "第" + e.getColumnNumber() + "字\n" +
			"    系统标识符:\t" + e.getSystemId() + "\n" +
			"    公用标识符:\t" + e.getPublicId() + "\n" +
			"    错误消息:\t\t" + e.getMessage()
		);		
		throw new SAXException("遇到可恢复错误.", e);
	}

    /**
     *接受不可恢复的错误调用
     *
     *<p>
     *这个函数负责所有和XML 1.0 Recommendation的section 1.2
     *里所定义的"fatal error" 状况。一旦这个错误发生后,这份
     *文件就不应该再继续被分析,所有和SAX 分析器有关的程序都
     *应该在此时终止。
     *</p>
     *
     * @param exception 用SAXParseExceptoin所封装起来的警告
     * @exception  org.xml.sax.SAXException  任何的SAX异常,
     *有可能是封装过的其他异常处理
     * @see org.xml.sax.SAXParseException
     */
    public void fatalError (SAXParseException e)
	throws SAXException{
		
		System.out.println(	
			"----不可恢复的分析错误----\n" +
			"    发生位置:\t\t第" + e.getLineNumber() + "行, " +	
			    "第" + e.getColumnNumber() + "字\n" +
			"    系统标识符:\t" + e.getSystemId() + "\n" +
			"    公用标识符:\t" + e.getPublicId() + "\n" +
			"    错误消息:\t\t" + e.getMessage()
		);		
		throw new SAXException("遇到不可恢复错误.", e);
	}

}// :) end of MyErrorHandler

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -