Il mio progetto disporre di file XML nel grezzo risorsa directory del mio progetto Android:Come rimuovere i commenti nei file XML grezzo con Gradle quando il file viene confezionato
vorrei rimuovere i commenti (<!-- ... -->
) da questi file quando viene confezionato in .apk
di file:
campione del file originale:
<?xml version="1.0" encoding="utf-8"?>
<celebrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="celebrations_schema.xsd">
<!-- This is a very important comment useful during development -->
<celebration name="celebration 1" type="oneTime" ... />
<!-- This is another very important comment useful during development -->
<celebration name="celebration 2" type="reccurent" ... />
</celebrations>
atteso di file filtrati:
<?xml version="1.0" encoding="utf-8"?>
<celebrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="celebrations_schema.xsd">
<celebration name="celebration 1" type="oneTime" ... />
<celebration name="celebration 2" type="reccurent" ... />
</celebrations>
ho trovato alcune soluzioni interessanti simili here, ma non in grado di gestire a farlo funzionare. L'aggiunta di queste righe nella mia app build.gradle
processResources {
filesMatching('**/myxmlfiletobestrippedfromcomments.xml') {
filter {
String line -> line.replaceAll('<!--.*-->', '')
}
}
}
genera il seguente errore:
Error:(86, 0) Gradle DSL method not found: 'processResources()'
Per l'apertura e l'analisi del file XML da codice Java, io uso il seguente metodo:
InputStream definition = context.getResources().openRawResource(resId);
...
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(definition, null);
parser.nextTag();
return parseCelebrations(parser);
} finally {
definition.close();
}
Sembra che si sta tentando di fare un compito Gradle. Non so come aggiungerlo al processo di compilazione, però. https://docs.gradle.org/current/userguide/tutorial_using_tasks.html –