J'essaie actuellement de générer un ensemble de modèles (spécifié via XML). Pour ce faire, je dois changer un seul attribut dans le fichier et l'enregistrer sous un nouveau nom de fichier.Modifier le fichier XML avec SAX
Le fichier ressemble à XML ceci:
(...)
<place id="P19" initialMarking="0" invariant="< inf" markingOffsetX="0.0" markingOffsetY="0.0" name="P19" nameOffsetX="-5.0" nameOffsetY="35.0" positionX="615.0" positionY="375.0"/>
<place id="P20" initialMarking="0" invariant="< inf" markingOffsetX="0.0" markingOffsetY="0.0" name="P20" nameOffsetX="-5.0" nameOffsetY="35.0" positionX="375.0" positionY="225.0"/>
(...)
Ce qui doit changer est la valeur de initialMarking aux valeurs de 2 à 999.
Voici ce que j'ai jusqu'à présent: C'est là que je obtenir la liste des fichiers à modifier et de les transmettre à l'analyseur
public void parse(String dir){
getFiles(dir);
try {
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
for(int i = 0; i < fileList.length; i++) {
FileReader reader = new FileReader(fileList[i]);
InputSource inputSource = new InputSource(reader);
xmlReader.setContentHandler(new ModelContentHandler());
xmlReader.parse(inputSource);
}
(...)
C'est là que je suis à la recherche de l'élément que je dois changer:
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
if(localName.equals("place") && atts.getValue(0).equals("P14") && atts.getValue(1).equals("2")){
System.out.println("Initial Marking of " + atts.getValue(0) + " is: " + atts.getValue(1) + "\n");
while(currentTokens <= Configuration.MAX_TOKENS){
System.out.println("Setting initial Tokens to: " + currentTokens);
}
}
}
Maintenant, au lieu d'imprimer « Configuration ... » Je voudrais changer la valeur en fonction et juste enregistrer le fichier entier sous un nouveau nom comme « Model_X_Y_Token.xml ».
Cela semble être une chose assez simple à faire, mais je n'ai jamais utilisé SAX auparavant et en regardant le JavaDoc, je n'arrive même pas à trouver un endroit pour commencer. Peut-être que quelqu'un peut me diriger dans la bonne direction?
est SAX une exigence? DOM serait beaucoup plus facile à coder avec –