2011年计算机二级考试JAVA知识点整理(75)

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  ValidatorHandler 提供了 TypeInfoProvider,ContentHandler 可以随时调用查看当前元素或其属性的类型。它还可以告诉您该属性是否是 ID,属性是在文档中明确指定的还是模式中的默认值。清单 6 对这个类作了概括。

  清单 6. TypeInfoProvider 类

  package javax.xml.validation;

  public abstract class TypeInfoProvider {

  public abstract TypeInfo getElementTypeInfo();

  public abstract TypeInfo getAttributeTypeInfo(int index);

  public abstract boolean isIdAttribute(int index);

  public abstract boolean isSpecified(int index);

  }

  最后,用 SAX XMLReader 解析文档。清单 7 是一个简单的程序,它利用了所有这些类和接口打印出文档所有元素的类型名。

  清单 7. 列举元素类型

  import java.io.*;

  import javax.xml.validation.*;

  import org.xml.sax.*;

  import org.xml.sax.helpers.*;

  public class TypeLister extends DefaultHandler {

  private TypeInfoProvider provider;

  public TypeLister(TypeInfoProvider provider) {

  this.provider = provider;

  }

  public static void main(String[] args) throws SAXException, IOException {

  SchemaFactory factory

  = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

  File schemaLocation = new File("/opt/xml/docbook/xsd/docbook.xsd");

  Schema schema = factory.newSchema(schemaLocation);

  ValidatorHandler vHandler = schema.newValidatorHandler();

  TypeInfoProvider provider = vHandler.getTypeInfoProvider();

  ContentHandler cHandler = new TypeLister(provider);

  vHandler.setContentHandler(cHandler);

  XMLReader parser = XMLReaderFactory.createXMLReader();

  parser.setContentHandler(vHandler);

  parser.parse(args[0]);

  }

  public void startElement(String namespace, String localName,

  String qualifiedName, Attributes atts) throws SAXException {

  String type = provider.getElementTypeInfo().getTypeName();

  System.out.println(qualifiedName + ": " + type);

  }

  }

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答