Ich benutze den Xerces-Parser mit folgendem Quellcode und zur Demo mit einem einfachen XML-Dokument:
Nun ist es so, dass das Dokument nicht korrekt geparst wird, wenn ich, so wie oben Zeilenumbrüche und "unnötige" Whitespaces im XML-Dokument habe.
Hier der dazugehörige Java-Code:
Zum Aufruf von setValidating() habe ich in der Doku folges gefunden:
setIgnoringElementContentWhitespace
public void setIgnoringElementContentWhitespace(boolean whitespace)
Specifies that the parsers created by this factory must eliminate whitespace in element content (sometimes known loosely as 'ignorable whitespace') when parsing XML documents (see XML Rec 2.10). Note that only whitespace which is directly contained within element content that has an element only content model (see XML Rec 3.2.1) will be eliminated. Due to reliance on the content model this setting requires the parser to be in validating mode. By default the value of this is set to false.
Wenn ich also setValidating() true übergebe, bekomme ich auf der Konsole folgenden Fehler:
Error: URI=file
:/Sandboxes/p/job.do Line=1: Document root element "root", must match DOCTYPE root "null".
Error: URI=file
:/Sandboxes/p/job.do Line=1: Document is invalid: no grammar found.
Wenn ich false übergebe, wird das nicht ausgegeben, aber das Ergebnis ist das gleiche. Das Dokument wird nicht korrekt durch meine Parsing-Aktionen wiedergeben.
Muss ich nun extra ein XML Schema oder eine DTD vorbereiten? Das wäre in dem Fall mit Kanonen auf Spatzen geschossen?!
Wie kriege ich also ein vollständiges "ignore whitespace" hin?
Danke und viele Grüsse,
Kim
Code:
<?xml version="1.0" ?>
<root>
<content attr="myattr" moreattr="moremyattr">
thecontent
</content>
</root>
Nun ist es so, dass das Dokument nicht korrekt geparst wird, wenn ich, so wie oben Zeilenumbrüche und "unnötige" Whitespaces im XML-Dokument habe.
Hier der dazugehörige Java-Code:
Code:
File cDir = new File(".");
String path = cDir.getAbsolutePath();
path = path.substring(0, path.length() - 1);
File xmlFile = new File(path + "job.do");
DocumentBuilderFactory factory = new DocumentBuilderFactoryImpl();
factory.setIgnoringElementContentWhitespace(true);
factory.setIgnoringComments(true);
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File(xmlFile.getAbsolutePath()));
Zum Aufruf von setValidating() habe ich in der Doku folges gefunden:
setIgnoringElementContentWhitespace
public void setIgnoringElementContentWhitespace(boolean whitespace)
Specifies that the parsers created by this factory must eliminate whitespace in element content (sometimes known loosely as 'ignorable whitespace') when parsing XML documents (see XML Rec 2.10). Note that only whitespace which is directly contained within element content that has an element only content model (see XML Rec 3.2.1) will be eliminated. Due to reliance on the content model this setting requires the parser to be in validating mode. By default the value of this is set to false.
Wenn ich also setValidating() true übergebe, bekomme ich auf der Konsole folgenden Fehler:
Error: URI=file
Error: URI=file
Wenn ich false übergebe, wird das nicht ausgegeben, aber das Ergebnis ist das gleiche. Das Dokument wird nicht korrekt durch meine Parsing-Aktionen wiedergeben.
Muss ich nun extra ein XML Schema oder eine DTD vorbereiten? Das wäre in dem Fall mit Kanonen auf Spatzen geschossen?!
Wie kriege ich also ein vollständiges "ignore whitespace" hin?
Danke und viele Grüsse,
Kim