Je suis assez nouveau pour javascript et j'essaye de développer des scripts pour une application basée sur java et utilise javascript comme interface pour traiter/modifier des informations de projet XML en ligne. Il n'y a pas de navigateur impliqué. J'utilise rhino dans un shell pour imiter l'environnement d'application afin de tester et construire les javascripts nécessaires pour analyser et modifier le XML.Parse XML en javascript - pas de navigateur - pas de parseur XML
L'objectif est de pouvoir lire dans un projet XML un modèle contenant de nombreux paramètres de traitement optionnels et de supprimer des sections entières de XML si cette fonction de traitement n'est pas nécessaire. De plus, j'ai besoin de modifier des valeurs spécifiques dans le XML, ce que je suis capable de faire, comme indiqué ci-dessous.
Voici un dépouillé fichier de projet XML (sample_proj.xml):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PROFILE lastSavedByAppVersion="" type="project" version="1">
<OPTIONS processingmode="concurrent"/>
<ENCODESESSION name="My_session">
<OPTIONS framesizemode="custom"/>
<PLUGINGROUP>
<PLUGIN duration="0" endOffset="0" name="Gamma.plugin" repeats="1" startOffset="0">
<PARAMGROUP event_id="0" keyframe="0">
<PARAM>
<NAME>Cb</NAME>
<VALUE>1.0</VALUE>
</PARAM>
<PARAM>
<NAME>Cr</NAME>
<VALUE>1.0</VALUE>
</PARAM>
<PARAM>
<NAME>Y</NAME>
<VALUE>1.0</VALUE>
</PARAM>
</PARAMGROUP>
</PLUGIN>
<PLUGIN duration="300" endOffset="0" name="Overlay.plugin" repeats="1" startOffset="0">
<PARAMGROUP event_id="0" keyframe="0">
<PARAM>
<NAME>Filename</NAME>
<VALUE></VALUE>
</PARAM>
</PARAMGROUP>
</PLUGIN>
</PLUGINGROUP>
</ENCODESESSION>
<EVENTTIMELINE dropframe="1" fps="24">
<EVENT id="0">
<FRAME>0</FRAME>
<DURATION>0</DURATION>
</EVENT>
</EVENTTIMELINE>
<SOURCE batchtype="cliplist" type="filesource">
<MEDIA name="File" type="video">
<FILENAME/>
</MEDIA>
<MEDIA name="File" type="audio">
<FILENAME/>
</MEDIA>
<clipListModel audioChannelMask="-1" audioFormat="AUTO" singleOutput="false" videoFormat="AUTO">
<clipList/>
</clipListModel>
<TIMECODECONFIGURATION>
<MODE>none</MODE>
</TIMECODECONFIGURATION>
</SOURCE>
</PROFILE>
je peux utiliser le code js suivant dans une coquille de rhinocéros pour lire le fichier puis essayez d'analyser:
importPackage(java.io)
var project = readFile("sample_proj.xml");
project = project.replace(/Gamma/g, "GammaRGB");
project = project.replace(/\s*<PLUGIN\s+.*Overlay.*[\s\S]*?\/PLUGIN>/img, "");
print(project);
Le premier project.replace fonctionne comme prévu et remplacera "Gamma.plugin" par "GammaRGB.plugin".
La deuxième regex ne fait cependant rien, bien que la même regex dans les évaluateurs externes de js regex est capable d'analyser et de supprimer toute la seconde section <PLUGIN> Overly.plugin </PLUGIN>
. Je suis habitué à construire des expressions rationnelles perl, donc l'expression rationnelle est basée sur ce que j'ai pu apprendre à propos de js et de l'analyse multi-lignes.
J'espérais pouvoir analyser et supprimer des sections XML en javascript pur sans avoir à charger un analyseur XML séparé. Je connais toujours le XML qui sera transmis, donc l'analyse syntaxique de base de texte en XML est préférée.
Merci pour toute aide,
Bill
ne pas utiliser le discours de regexes dans 3 ... 2 ... – mpen