根据xml文档编写dtd文件并用java代码测试


 
 
xml文件:
<应聘信息>
    <应聘者>
        <姓名> 张三 </姓名>
        <硕士> 湖南大学计算机理学硕士 </硕士>
        <奖励> 获得计算机竞赛一等奖一次 </奖励>
        <奖励> 获得三次一等奖学金 </奖励>
        <处分> 被警告处分一次 </处分>
        <性别></性别>
    </应聘者>
    <应聘者>
        <姓名> 李翠花  </姓名>
        <博士> 武汉大学自动化专业工学博士 </博士>
        <奖励> 获得五次一等奖学金 </奖励>
        <性别></性别>
    </应聘者>
    <应聘者>
        <姓名> 王娟娟  </姓名>
        <本科> 吉林大学中文系文学学士 </本科>
        <性别></性别>
    </应聘者>
</应聘信息>
编写的外部dtd:在<xml>标题后 正式xml内容之前 添加外部dtd引用<!DOCTYPE 根元素 SYSTEM "外部dtd文件名.dtd" >
具体内容:
<? xml version ="1.0" encoding ="UTF-8" ?>
<!DOCTYPE 应聘信息 SYSTEM "second.dtd">

<应聘信息>
    <应聘者>
        <姓名> 张三 </姓名>
        <硕士> 湖南大学计算机理学硕士 </硕士>
        <奖励> 获得计算机竞赛一等奖一次 </奖励>
        <奖励> 获得三次一等奖学金 </奖励>
        <处分> 被警告处分一次 </处分>
        <性别></性别>
    </应聘者>
    <应聘者>
        <姓名> 李翠花  </姓名>
        <博士> 武汉大学自动化专业工学博士 </博士>
        <奖励> 获得五次一等奖学金 </奖励>
        <性别></性别>
    </应聘者>
    <应聘者>
        <姓名> 王娟娟  </姓名>
        <本科> 吉林大学中文系文学学士 </本科>
        <性别></性别>
    </应聘者>
</应聘信息>

外部dtd文档:

<!ELEMENT 应聘信息 (应聘者+)>
<!ELEMENT 应聘者 (姓名|性别|硕士|博士|本科|奖励|处分)*>
        <!ELEMENT 姓名 (#PCDATA)>
        <!ELEMENT 性别 (#PCDATA)>
        <!ELEMENT 硕士 (#PCDATA)>
        <!ELEMENT 博士 (#PCDATA)>
        <!ELEMENT 本科 (#PCDATA)>
        <!ELEMENT 奖励 (#PCDATA)>
        <!ELEMENT 处分 (#PCDATA)>



对于内部dtd文件:在<xml>标题后 正式xml内容之前 添加内部dtd内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 应聘信息 [
        <!ELEMENT 应聘信息 (应聘者+)>
        <!ELEMENT 应聘者 (姓名,硕士?,博士?,本科?,奖励*,处分*,性别)*>
        <!ELEMENT 姓名 (#PCDATA)>
        <!ELEMENT 硕士 (#PCDATA)>
        <!ELEMENT 博士 (#PCDATA)>
        <!ELEMENT 本科 (#PCDATA)>
        <!ELEMENT 奖励 (#PCDATA)>
        <!ELEMENT 处分 (#PCDATA)>
        <!ELEMENT 性别 (#PCDATA)>

]>

<应聘信息>
    <应聘者>
        <姓名> 张三 </姓名>
        <硕士> 湖南大学计算机理学硕士 </硕士>
        <奖励> 获得计算机竞赛一等奖一次 </奖励>
        <奖励> 获得三次一等奖学金 </奖励>
        <处分> 被警告处分一次 </处分>
        <性别></性别>
    </应聘者>
    <应聘者>
        <姓名>李翠花</姓名>
        <博士>武汉大学自动化专业工学博士</博士>
        <奖励>获得五次一等奖学金</奖励>
        <性别></性别>

        <姓名>王娟娟</姓名>
        <本科>吉林大学中文系文学学士</本科>
        <性别></性别>
    </应聘者>
</应聘信息>


对于java语言测试引用dtd内容xml文档是否有效(外部dtd与内部dtd均适用):

public class A
{
    public static void main(String[] args)
    {
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        DocumentBuilder builder=null;

        try
        {
            factory.setValidating(true);
            builder=factory.newDocumentBuilder();
        }
        catch (ParserConfigurationException e)
        {
            e.printStackTrace();
        }

        try
        {
            builder.parse("E:\\IntelliJ IDEA\\jsp\\src\\main\\webapp\\Second\\second.xml");
            System.out.println("xml文档经验证有效!");
        }
        catch (SAXException e)
        {
            e.printStackTrace();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

测试xml有效结果:


若dtd编写不正确则结果会抛出异常。


猜你喜欢

转载自blog.csdn.net/serialization_rong/article/details/79952853