2 votes

Comment utiliser la fonction FILTERXML de LibreOffice sur des documents XML avec des espaces de noms ?

J'ai du mal à obtenir la valeur d'un nœud XML à l'aide de la fonction FilterXML() lorsque l'élément document du document XML comporte un espace de nom spécifié.

Exemple :

<?xml version="1.0" encoding="UTF-8"?>
<DocumentElement xmlns="XMLSchemaDefinition.xsd">
    <Field>
        <Value>100</Value>
    </Field>
</DocumentElement>
    \= FILTERXML(A1, "/Document/Element/Value\[1\]")

J'ai réussi à faire fonctionner FilterXML en supprimant l'espace de nom de la manière suivante :

\= FILTERXML(SUBSTITUTE(A1, "<DocumentElement xmlns=""XMLSchemaDefinition.xsd"">", "<DocumentElement>"), "/DocumentElement/Field/Value\[1\]")

Existe-t-il un moyen d'obtenir la valeur du nœud XML sans avoir à supprimer le ou les espaces de noms ?

J'utilise actuellement LibreOffice Version : 5.0.5.2

0voto

Jim K Points 3356

Ignorez l'espace de nom comme ceci :

= FILTERXML(A1, "/*[name()='DocumentElement']/*[name()='Field']/*[name()='Value'][1]")

Véase https://stackoverflow.com/questions/5239685/xml-namespace-breaking-my-xpath .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X