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
Annonceindlæg fra Thales
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.
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>
28. januar 2003 - 14:44
#3
SAXParserFactory har også en setValidating metode, hvis du bruger SAX.
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");
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");
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 ???
28. januar 2003 - 15:44
#7
Det ser rigtigt ud. Virker det ikke ?
28. januar 2003 - 15:48
#8
Jeg har ikke lige testet det endnu
29. januar 2003 - 10:33
#9
Jo, det ser ud til at virke fint, takker
Kurser inden for grundlæggende programmering