biturbogolf
Grünschnabel
guten morgen
habe ein problem mit dem validieren einer xml gegen eine xsd. laut externen tool und auch eigenem code ist die xml valide.
jetzt wollte ich eine xml in einen DOM parsen und validieren, damit default werte mit in den DOM übernommern werden, aber ich weiß nciht wie ich das genau amchen muss.
kann auch sein, dass ich irgendwelche probleme in der xml oder xsd habe...
bitte um schnelle hilfe
Danke
ich poste einfach mal das was ich habe...
Das Programm baut einen DOM aus einer xml auf und gibt diesen wieder ordentlich aus, aber ich möche halt die default Werte auch haben...
und die Fehlermeldung stört mich.
habe ein problem mit dem validieren einer xml gegen eine xsd. laut externen tool und auch eigenem code ist die xml valide.
jetzt wollte ich eine xml in einen DOM parsen und validieren, damit default werte mit in den DOM übernommern werden, aber ich weiß nciht wie ich das genau amchen muss.
kann auch sein, dass ich irgendwelche probleme in der xml oder xsd habe...
bitte um schnelle hilfe
Danke
ich poste einfach mal das was ich habe...
xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--Das ist ein Test-->
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="d:\DOCUME~1\li04096\xmlparsertest\domtestsample\testschema.xsd">
<knoten Date="7.4.2000" Tag="5"/>
<knoten Tag="8"/>
<knoten Jahr="2008" Monat="April" Tag="9">
<kleiner_knoten Name="Sascha"/>
</knoten>
</root>
xsd:
<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema erstellt mit XMLSpy v2008 sp1 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="knoten" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="knoten">
<xs:complexType>
<xs:sequence>
<xs:element ref="kleiner_knoten" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Date" type="xs:string" use="optional" default="7.4.2008"/>
<xs:attribute name="Tag" type="xs:short" use="optional" default="5"/>
<xs:attribute name="Jahr" type="xs:short" use="optional" default="2008"/>
<xs:attribute name="Monat" type="xs:string" use="optional" default="April"/>
</xs:complexType>
</xs:element>
<xs:element name="kleiner_knoten">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="optional" default="Paul"/>
<xs:attribute name="Nachname" type="xs:string" use="optional" default="Stäglich"/>
</xs:complexType>
</xs:element>
</xs:schema>
javacode:
package dom;
import java.io.File;
import java.io.StringWriter;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
/**
* Simple Sample that:
* - Generates a DOM from scratch.
* - Writes the DOM to a String using an LSSerializer
* @author Jeffrey Rodriguez
* @version $Id: DOMGenerate.java 546623 2007-06-12 20:25:08Z mrglavas $
*/
public class DOMGenerate {
public static void main( String[] argv ) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setValidating(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("test.xml");
DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
DOMImplementationLS domImplLS = (DOMImplementationLS)registry.getDOMImplementation("LS");
LSSerializer ser = domImplLS.createLSSerializer(); // Create a serializer for the DOM
LSOutput out = domImplLS.createLSOutput();
StringWriter stringOut = new StringWriter(); // Writer will be a String
out.setCharacterStream(stringOut);
ser.write(doc, out); // Serialize the DOM
System.out.println( "STRXML = "
+ stringOut.toString() );// Spit out the DOM as a String
} catch ( Exception ex ) {
ex.printStackTrace();
}
}
}
Fehlermeldung:
Warning: validation was turned on but an org.xml.sax.ErrorHandler was not
set, which is probably not what is desired. Parser will use a default
ErrorHandler to print the first 10 errors. Please call
the 'setErrorHandler' method to fix this.
Error: URI=file:///D:/Documents%20and%20Settings/li04096/xmlparsertest/domtestsample/test.xml Line=3: Document is invalid: no grammar found.
Error: URI=file:///D:/Documents%20and%20Settings/li04096/xmlparsertest/domtestsample/test.xml Line=3: Document root element "root", must match DOCTYPE root "null".
STRXML = <?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="d:\DOCUME~1\li04096\xmlparsertest\domtestsample\testschema.xsd">
<knoten Date="7.4.2000" Tag="5"/>
<knoten Tag="8"/>
<knoten Jahr="2008" Monat="April" Tag="9">
<kleiner_knoten Name="Sascha"/>
</knoten>
</root><!--Das ist ein Test-->
Das Programm baut einen DOM aus einer xml auf und gibt diesen wieder ordentlich aus, aber ich möche halt die default Werte auch haben...
und die Fehlermeldung stört mich.