XSD Convertieren

Status
Nicht offen für weitere Antworten.

Titanpharao

Bekanntes Mitglied
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.

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;
    }
  }
 

Titanpharao

Bekanntes Mitglied
Ja beim einlesen...und schreiben?
Probier noch bissel rum...

<xs:element name="CPU">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="titel" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="intel">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="C2D">
<xs:complexType>

Da würde der aber alles mitnehmen...auch complexType..
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben