Avatar billede kristianp Nybegynder
28. januar 2003 - 14:04 Der er 8 kommentarer og
1 løsning

Validere xml doc

Jeg skal parse et xml doc, men inden jeg gør noget som helst vil jeg gerne vide om doc er ok. Er det muligt at læse filen fra disk og validere den om mod en dtd på en simpel måde
Avatar billede arne_v Ekspert
28. januar 2003 - 14:38 #1
Ja.

Med W3C DOM:

      DocumentBuilderFactory docfact = DocumentBuilderFactory.newInstance();
      docfact.setValidating(true);
      doc = docfact.newDocumentBuilder().parse("foobar.xml");

hvor foobar.xml har en referance till foobar.dtd i
toppen.
Avatar billede arne_v Ekspert
28. januar 2003 - 14:43 #2
Altså:

DocumentBuilderFactory docfact = DocumentBuilderFactory.newInstance();
docfact.setValidating(true);
Document doc = docfact.newDocumentBuilder().parse("foobar.xml");

og:

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE foobar SYSTEM "foobar.dtd">
<foobar>
...
</foobar>
Avatar billede arne_v Ekspert
28. januar 2003 - 14:44 #3
SAXParserFactory har også en setValidating metode, hvis du bruger SAX.
Avatar billede arne_v Ekspert
28. januar 2003 - 14:49 #4
Altså:

SAXParserFactory parsfact = SAXParserFactory.newInstance();
parsfact.setValidating(false);
XMLReader reader = parsfact.newSAXParser().getXMLReader();
reader.setContentHandler(new FoobarHandler());
reader.parse("foobar.xml");
Avatar billede arne_v Ekspert
28. januar 2003 - 14:50 #5
Skulle naturligvis være:

SAXParserFactory parsfact = SAXParserFactory.newInstance();
parsfact.setValidating(true);
XMLReader reader = parsfact.newSAXParser().getXMLReader();
reader.setContentHandler(new FoobarHandler());
reader.parse("foobar.xml");
Avatar billede kristianp Nybegynder
28. januar 2003 - 15:33 #6
Skulle denne metode

private boolean validateEBSTFile(T3File ebstFile)
    {
        boolean result = false;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(true);
        try
        {
            Document doc = factory.newDocumentBuilder().parse(ebstFile.getFileInputStream());
        }
        catch (T3Exception e)
        {
        }
        catch (SAXException e)
        {
        }
        catch (IOException e)
        {
        }
        catch (ParserConfigurationException e)
        {
        }

       
        return result;
       
    }

lave en exception hvis xml doc ikke er validt ???
Avatar billede arne_v Ekspert
28. januar 2003 - 15:44 #7
Det ser rigtigt ud.

Virker det ikke ?
Avatar billede kristianp Nybegynder
28. januar 2003 - 15:48 #8
Jeg har ikke lige testet det endnu
Avatar billede kristianp Nybegynder
29. januar 2003 - 10:33 #9
Jo, det ser ud til at virke fint, takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester