Erreur d'espace de nom lors de l'utilisation de XMLStarlet
-
05-07-2019 - |
Question
J'ai un fichier de configuration XML qui fonctionne très bien en Java et j'essaie d'analyser des informations à l'aide de XMLStarlet dans un script. L'erreur que je reçois est:
xml sel -t -m "Config/Application" -v "@rmiPort" -n config.xml
namespace error : Namespace prefix log4j on configuration is not defined
<log4j:configuration>
^
config.xml a cette déclaration:
<?xml version="1.0"?>
<!DOCTYPE Config SYSTEM "../../../dtds/Config.dtd">
<Config>
...
<Logger>
<log4j:configuration>
...
config.dtd ressemble à ceci:
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY % log4j:configuration SYSTEM "log4j.dtd">
%log4j:configuration;
...
<!ELEMENT Logger ((log4j:configuration)*)>
Avez-vous une idée de la façon dont je peux réparer l’espace de noms ou calmer l’erreur?
La solution
Vous devez déclarer l'espace de noms dans les options globales de la sélection.
Log4j utilise l'espace de nom ci-dessous.
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
Vous ne nous avez pas fourni le fichier config.xml complet, mais je pense que votre commande XMLStarlet devrait ressembler à ce qui suit.
xml sel -N log4j="http://jakarta.apache.org/log4j/" -t -m "Config/Application/Logger/log4j:configiguration/" -v "@rmiPort" -n config.xml
L’espoir que cela aide.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow