加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jaxp解析DTD的例子

发布时间:2020-12-16 05:08:25 所属栏目:百科 来源:网络整理
导读:相信想知道 jaxp 包如何进行 DTD 解析的人,看了这个简单例子就明白了。 1 :类DTDTest源程序; 2 :用于测试的DTD文档:boolk-order.dtd; 3 :程序输出结果。 至于 包,可从 sun 的网站得到。 1:DTDTest.java: importorg.xml.sax.InputSource; importcom.s

相信想知道jaxp包如何进行DTD解析的人,看了这个简单例子就明白了。
1
:类DTDTest源程序;
2
:用于测试的DTD文档:boolk-order.dtd;
3
:程序输出结果。

至于包,可从sun的网站得到。
1:DTDTest.java:

importorg.xml.sax.InputSource;
importcom.sun.xml.parser.Parser;
importjava.io.*;
importorg.xml.sax.*;
importcom.sun.xml.parser.DtdEventListener;
publicclass DTDTest implements DtdEventListener{
private Parser parser;
private String dtdSource;
private InputSource buf;
public DTDTest(){
parser=new Parser();
parser.setDTDHandler(this);
File f=newFile("file:book-order.dtd");
dtdSource=f.getPath();
byte[]data=("<!DOCTYPE UNKNOWN SYSTEM""+dtdSource+""> <x />").getBytes();
buf=newInputSource(new ByteArrayInputStream(data));
Stringparent=f.getParent();
if(parent==null)parent=".";
buf.setSystemId(parent);
}
public void parse() throws Exception{
parser.parse(buf);
}
public static void main(String args[]){
DTDTest dtdtest=newDTDTest();
try {dtdtest.parse();}
catch (Exception e){}
}

/**Thefollowing will implement methods in DtdEventListener interface******/
public void notationDecl(String name,StringpublicId,String systemId){}

public void unparsedEntityDecl(Stringname,String publicId,String systemId,String notationName){}
public void startDtd (String rootName) throwsSAXException{
System.out.println("Now begin to start to parse DTD File!");
if (rootName!=null)System.out.println("rootName: "+rootName);
System.out.println("");
}
public void externalDtdDecl (String publicId,String systemId) throws SAXException{
System.out.println("Now begin to do externalDtdDecl!");
if (publicId!=null)System.out.println("publicId: "+publicId);
if (systemId!=null)System.out.println("syutemId: "+systemId);
System.out.println("");
}
public void internalDtdDecl (StringinternalSubset) throws SAXException{
System.out.println("Nowshow internalDtdDecl!");
if(internalSubset!=null) System.out.println("internalSubset:"+internalSubset);
System.out.println("");
}
public void internalEntityDecl (String name,String value) throws SAXException
{
System.out.println("Nowshow internalEntityDecl!");
if(name!=null) System.out.println("name: "+name);
if (value!=null)System.out.println("value: "+value);
System.out.println("");
}
public void externalEntityDecl (Stringname,String systemId) throws SAXException{
System.out.println("Nowshow externalEntityDecl!");
if(name!=null) System.out.println("name: "+name);
if(publicId!=null) System.out.println("publicId: "+publicId);
if(systemId!=null) System.out.println("systemId: "+systemId);
System.out.println("");
}
public void elementDecl (String elementName,String contentModel) throws SAXException{
System.out.println("Nowshow elementDecl!");
if(elementName!=null) System.out.println("elementName: "+elementName);
if(contentModel!=null) System.out.println("contentModel:"+contentModel);
System.out.println("");
}
public void attributeDecl (StringelementName,StringattributeName,StringattributeType,String options [],StringdefaultValue,Boolean isFixed,booleanisRequired)throws SAXException{
System.out.println("Now show attributeDecl!");
if(elementName!=null) System.out.println("elementName: "+elementName);
if (attributeName!=null)System.out.println("attributeName:"+attributeName);
if (attributeType!=null)System.out.println("attributeType:"+attributeType);
if (defaultValue!=null)System.out.println("defaultValue:"+defaultValue);
if (options!=null){
System.out.println("attribute value options:");
for (int i=0;i<options.length;i++)System.out.println(options[i]);
}
System.out.println("");
}
public void endDtd () throws SAXException{
System.out.println("parse DTDFile is end!");
System.out.println("bye-bye");
}
}


2:book-order.dtd:

<!ELEMENT Order (Customer,Manifest,Receipt)>
<!ATTLIST Order xmlns CDATA #FIXED"http://www.example.com/myschema.xml">
<!ELEMENT Customer (Name,Cardnum)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Cardnum (#PCDATA)>
<!ELEMENT Manifest (Item*)>
<!ELEMENT Item (ID,Title,Quantity,UnitPrice)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT UnitPrice (#PCDATA)>
<!ELEMENT Receipt (Subtotal,Tax,Total)>
<!ELEMENT Subtotal (#PCDATA)>
<!ELEMENT Tax (#PCDATA)>
<!ELEMENT Total (#PCDATA)>

3: 程序输出结果: Nowbegin to start to parse DTD File! rootName:UNKNOWNNow begin to doexternalDtdDecl! syutemId:file:book-order.dtdNow show elementDecl! elementName:Order contentModel:(Customer,Receipt)Now show attributeDecl! elementName: Order attributeName: xmlns attributeType: CDATA defaultValue:http://www.example.com/myschema.xmlNow showelementDecl! elementName:Customer contentModel:(Name,Cardnum)Now showelementDecl! elementName: Name contentModel:(#PCDATA)Now show elementDecl! elementName:Cardnum contentModel:(#PCDATA)Now show elementDecl! elementName:Manifest contentModel:(Item*)Nowshow elementDecl! elementName: Item contentModel:(ID,UnitPrice)Nowshow elementDecl! elementName: ID contentModel: (#PCDATA)Now show elementDecl! elementName:Title contentModel: (#PCDATA)Now showelementDecl! elementName:Quantity contentModel:(#PCDATA)Now showelementDecl! elementName:UnitPrice contentModel: (#PCDATA)Now show elementDecl! elementName:Receipt contentModel: (Subtotal,Total)Now show elementDecl!elementName: SubtotalcontentModel:(#PCDATA)Now show elementDecl! elementName:TaxcontentModel: (#PCDATA)Now showelementDecl! elementName:Total contentModel: (#PCDATA) parseDTDFile is end! bye-bye ProcessExit...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读