G
Guest
Gast
Hi zusammen,
ich lese eine XML-Datei per SAXParser, indem ich in einer Klasse das Interface ContentHandler(org.xml.sax.ContentHandler) implementiere (verkürzt):
Das funktioniert soweit auch ganz gut. Allerdings kann es sein, dass ein Tag in der folgenden Ausführung reinkommt:
Diesbezüglich möchte ich also, dass jeder Tag, der gelesen wird, so gelesen wird, als wenn eine Großschreibung dieses Tags vorliegt.
In der startElement und endElement-Methode habe ich bereits versucht die entsprechenden Attribute auf toUpperCase() zu setzen. Leider ohne Erfolg:
Kann mir wer vielleicht sagen, an welchen Schrauben ich noch drehen muss, um jeden XML-Tag in der Großschreibung zu erhalten?
ich lese eine XML-Datei per SAXParser, indem ich in einer Klasse das Interface ContentHandler(org.xml.sax.ContentHandler) implementiere (verkürzt):
Code:
public class MyContentHandlerImpl implements ContentHandler
{
ContentHandler handler;
public MyContentHandlerImpl(ContentHandler ch) {
handler= ch;
}
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
handler.startElement(fixedUri, localName, qName, atts);
}
protected abstract String handleEmptyURI(String uri);
public void characters(char[] ch, int start, int length)
throws SAXException {
handler.characters(ch, start, length);
}
public void endDocument() throws SAXException {
handler.endDocument();
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
handler.endElement(uri, localName, qName);
}
public void endPrefixMapping(String prefix) throws SAXException {
}
public void ignorableWhitespace(char[] ch, int start, int length)
}
public void processingInstruction(String target, String data)
}
public void setDocumentLocator(Locator locator) {
}
public void skippedEntity(String name) throws SAXException {
}
public void startDocument() throws SAXException {
}
public void startPrefixMapping(String prefix, String uri)
}
}
Das funktioniert soweit auch ganz gut. Allerdings kann es sein, dass ein Tag in der folgenden Ausführung reinkommt:
Code:
<TestTag>
<TESTTAG>
Diesbezüglich möchte ich also, dass jeder Tag, der gelesen wird, so gelesen wird, als wenn eine Großschreibung dieses Tags vorliegt.
In der startElement und endElement-Methode habe ich bereits versucht die entsprechenden Attribute auf toUpperCase() zu setzen. Leider ohne Erfolg:
Code:
javax.xml.bind.UnmarshalException: Namespace URIs and local names to the unmarshaller needs to be interned.
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:603)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:244)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:239)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:114)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1009)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:446)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:427)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:137)
at MyContentHandlerImpl .startElement(AbstractNamespaceFilterHandler.java:29)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
Kann mir wer vielleicht sagen, an welchen Schrauben ich noch drehen muss, um jeden XML-Tag in der Großschreibung zu erhalten?