在Java中使用外部DTD进行XML验证

在Java中使用外部DTD进行XML验证,java,xml,dtd,Java,Xml,Dtd,我如何测试xml字符串,以查看它是否根据和dtd文件进行验证 我已经读过了,但他们似乎只在谈论替换xml文件上的dtd声明 Person.DTD <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT person (id)> <!ELEMENT id (#PCDATA)> 试验 @测试 public void应将“枪战”序列化为“xml”,并根据“dtd()验证”{ 字符串xml=“12”; Assert.as

我如何测试xml字符串,以查看它是否根据和dtd文件进行验证

我已经读过了,但他们似乎只在谈论替换xml文件上的dtd声明

Person.DTD

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT person (id)>
<!ELEMENT id (#PCDATA)>

试验

@测试
public void应将“枪战”序列化为“xml”,并根据“dtd()验证”{
字符串xml=“12”;
Assert.assertTrue(validate_xml(“person.dtd”,xml));
}
布尔验证xml(字符串dtd\U文件名,字符串xml){
//检查xml并抛出验证错误
抛出新的NotImplementedException();
}

谢谢

稍后我可能会带着一些代码回来,但我想到的是一个过程:

  • 使用StringReader包装字符串
  • 创建验证SAX解析器
  • 解析文件,让SAX处理程序跟踪错误实例的数量
  • 如果没有错误,则有效

  • 稍后我可能会带一些代码回来,但我想到的是以下过程:

  • 使用StringReader包装字符串
  • 创建验证SAX解析器
  • 解析文件,让SAX处理程序跟踪错误实例的数量
  • 如果没有错误,则有效

  • 这个问题的答案在这里:这个问题的可能重复答案在这里
    @Test
    public void should_serialize_a_shootout_to_xml_and_validate_against_a_dtd(){
        String xml = "<person><id>12</id></person>";        
        Assert.assertTrue(validate_xml("person.dtd",xml));
    }
    
    boolean validate_xml(String dtd_filename,String xml){
        //check xml and throw validation errors
        throw new NotImplementedException();
    }