Hi ich habe mein Programm soweit fertig.
Es kann XML-Datein lesen -> diese in einem Baum anzeigen der mit Checkboxen versehen ist ->eine neue XML Datei erstellen, welche nur die angeklickten Tags hat.
Jetzt muss ich das aber nochmal für eine XSD machen
Ok denn Baum brauch ich nicht nochmal und welche Tags angeklickt sind weis ich auch. Nur wie kann ich jetzt eine XSD Datei lesen und schreiben? Gibts spezielle XSD Parser?
Hier mal mein Auszug für die XML Datei.
Es kann XML-Datein lesen -> diese in einem Baum anzeigen der mit Checkboxen versehen ist ->eine neue XML Datei erstellen, welche nur die angeklickten Tags hat.
Jetzt muss ich das aber nochmal für eine XSD machen
Ok denn Baum brauch ich nicht nochmal und welche Tags angeklickt sind weis ich auch. Nur wie kann ich jetzt eine XSD Datei lesen und schreiben? Gibts spezielle XSD Parser?
Hier mal mein Auszug für die XML Datei.
Code:
public void convert(String pfad2) {
long startTime = System.currentTimeMillis();
try {
XMLOutputFactory outfactory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = outfactory.createXMLStreamWriter(new FileOutputStream(pfad2));
InputStream in = new FileInputStream( pfad );
XMLInputFactory infactory = XMLInputFactory.newInstance();
XMLEventReader parser = infactory.createXMLEventReader( in );
while ( parser.hasNext() )
{
XMLEvent event = parser.nextEvent();
switch ( event.getEventType() )
{
case XMLStreamConstants.START_DOCUMENT:
writer.writeStartDocument();
break;
case XMLStreamConstants.END_DOCUMENT:
writer.writeEndDocument();
writer.close();
parser.close();
break;
case XMLStreamConstants.START_ELEMENT:
StartElement element = event.asStartElement();
buffer.add(element.getName().toString());
if(write(element.getName().toString()))writer.writeStartElement(element.getName().toString());
if(attchar){
for ( Iterator<?> attributes = element.getAttributes();attributes.hasNext(); ){
Attribute attribute = (Attribute) attributes.next();
writer.writeAttribute( attribute.getName().toString(), attribute.getValue() );
}
}
break;
case XMLStreamConstants.CHARACTERS:
Characters characters = event.asCharacters();
if(attchar){
if ( ! characters.isWhiteSpace() )
writer.writeCharacters(characters.getData());
}
break;
case XMLStreamConstants.END_ELEMENT:
if(write(event.asEndElement().getName().toString())) writer.writeEndElement();
buffer.remove(buffer.size()-1);
break;
case XMLStreamConstants.ATTRIBUTE:
break;
default :break;
}
}
} catch (Exception exc) {
System.out.println(exc);
System.out.println("Eigentlich müste es gehen.");
}
long estimatedTime = System.currentTimeMillis() - startTime;
System.out.println("Convertieren:"+ estimatedTime/1000.0+" Sekunden.");
}
private boolean write(String parser){
for(int i=0;i<nodes.length;++i){
if(!nodes[i].isSelected){
if(nodesbuffer(i).equals(buffer)){
attchar=false;
return false;
}
}
}
attchar=true;
return true;
}
private ArrayList<String> nodesbuffer(int i){
ArrayList<String> buffer2 = new ArrayList<String>();
buffer2.add(nodes[i].toString());
TreeNode n=nodes[i];
for(int x=0;x<nodes[i].getLevel();++x){
n=n.getParent();
buffer2.add(n.toString());
}
Collections.reverse(buffer2);
return buffer2;
}
}