使用Xerces-J的SAX方式进行XML程序设计

--常用的property介绍


在SAX里,property表示解析器进行解析得到的数据或者解析器的“配件”,例如各种处理器(Handler)或者分析器(Resolver)。setProperty方法可以用来设置解析器的属性,第一个参数是一个URI,但是事实上仅仅作为一个字符串使用,第二个参数为一个对象,这个对象根据不同的property会有不同的变化,因此在使用的时候应该查一下相应的文档确认使用什么对象。getProperty方法可以用来获取解析器的信息。下面的代码演示了如何使用setProperty和getProperty方法。

 

try { p.setProperty(“http://apache.org/xml/properties/dom/document-class-name”, “org.apache.xerces.dom.DocumentImpl”); //这里使用setProperty对property进行设置 String strDocName = p.getProperty( “http://apache.org/xml/properties/dom/document-class-name”); //这里使用getProperty读取一个property的值 } catch (SAXException e) { //错误处理 System.out.println(“error in setting up parser property”); }

SAX鼓励对XML进行开发的组织和个人扩展Property,例如Apache就在Xerces中增加了http://apache.org/xml/properties/dom/document-class-name,这也是上面的例子中使用的。表5列出了SAX和APACHE提供的所有的property。

表5:SAX和APACHE提供的property
property 对象类型 功能
http://xml.org/sax/properties/xml-string java.lang.String 当前正在处理的节点的XML字符串,Xerces当前不支持这个属性。
http://xml.org/sax/properties/dom-node org.w3c.dom.Node 当前正在处理的DOM节点。
http://xml.org/sax/properties/lexical-handler org.xml.sax.ext.LexicalHandler 设置LexicalHandler。
http://xml.org/sax/properties/declaration-handler org.xml.sax.ext.DeclHandler 设置DTD声明的处理器。
http://apache.org/xml/properties/dom/current-element-node org.w3c.dom.Node 这是一个DOM属性,表示当前正在处理的DOM Element节点。
http://apache.org/xml/properties/dom/document-class-name java.lang.String 文档对象实现的类的名字,在Xerces中为org.apache.xerces.dom.DocumentImpl