Remplacer XML

À propos de la fonctionnalité de remplacement XML.


Les informations générales

Remplacer XML est une fonctionnalité puissante qui modifie une base de données en manipulant sa représentation XML.

Il crée un DOM XML KeePass 2.x de la base de données actuelle en mémoire, effectue l'opération spécifiée par l'utilisateur (par exemple : supprimer des nœuds ou remplacer du texte), charge l'arborescence XML modifiée, et fusionne la base de données actuelle avec la base de données modifiée.

Attention Il s'agit d'une fonction réservée aux experts. Utilisez-la avec précaution !

Remplacer XML peut être invoqué via 'Outils' → 'Outils de la base de données' → 'Remplacer XML...'.

Des informations sur XPath et les expressions régulières sont disponibles sur la page d'aide 'Rechercher'.

KeePass protège les entrées de l'historique ; XML Replace ne peut pas être utilisé pour les modifier. De plus, toute modification des propriétés de la base de données (nom/description de la base de données, etc.) peut être ignorée.


Exemples


Remplacer le texte dans tous les titres et les remarques d'entrée

Sélectionner les nœuds :

//Entry/String[(Key = 'Title') or (Key = 'Notes')]/Value

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

LeTexteÀRechercher

Remplacer par :

LeRemplacement

Dans tous les titres et remarques d'entrée, cela remplace toutes les occurrences de LeTexteÀRechercher par LeRemplacement.


Remplacer toutes les adresses (URLs) HTTP par des adresses (URLs) HTTPS

Sélectionner les nœuds :

//Entry/String[Key = 'URL']/Value

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

^http:

Remplacer par :

https:

Options :

☑ Expression régulière

Dans tous les champs d'adresse (URL) d'entrée, cela remplace toutes les URL HTTP par des URL HTTPS.


Remplacer les icônes de groupe

Sélectionner les nœuds :

//Group/IconID

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

^48$

Remplacer par :

36

Options :

☑ Expression régulière

Cela assigne l'icône du package ZIP à tous les groupes qui ont actuellement un dossier fermé en tant qu'icône.

Tous les ID d'icône peuvent être trouvés dans la boîte de dialogue du sélecteur d'icône.


Supprimer les chaînes d'entrée par nom

Sélectionner les nœuds :

//Entry/String[Key = 'LeNom']

Action :

Supprime des nœuds

Supprime toutes les chaînes de caractères d'entrée nommées LeNom.


Supprimer les pièces jointes d'entrée par extension de nom

Sélectionner les nœuds :

//Entry/Binary/Key[(string-length(.) >= 4) and (substring(., string-length(.) - 3) = '.jpg')]/..

Action :

Supprime des nœuds

Supprime toutes les pièces jointes dont le nom se termine par « .jpg ».


Réinitialiser les couleurs d'arrière-plan

Sélectionner les nœuds :

//Entry/BackgroundColor

Action :

Supprime des nœuds

Positionne la couleur d'arrière-plan par défaut (transparent/alterné) à toutes les entrées.


Désactiver la saisie automatique pour les entrées avec des champs vides

Sélectionner les nœuds :

//Entry/String[((Key = 'UserName') or (Key = 'Password')) and (Value = '')]/../AutoType/Enabled

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

True

Remplacer par :

False

Désactive la saisie automatique pour toutes les entrées qui ont un champ Nom d'utilisateur ou un champ de mot de passe vide.


Convertir {DELAY= en majuscules

Sélectionner les nœuds :

//DefaultSequence | //KeystrokeSequence

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

{DELAY=

Remplacer par :

{DELAY=

Convertit tous les codes {DELAY= dans les substitutions et les associations de séquence de saisie automatique en majuscules (par défaut, l'option de sensibilité à la casse est désactivée, donc le texte 'Que rechercher' correspond à toutes les casses).

Dans KeePass 2.x, les paramètres substituables sont insensibles à la casse. Cependant, cette opération de remplacement XML peut être utile pour préparer l'exemple suivant (qui correspond à {DELAY= d'une manière sensible à la casse).


Ajouter {DELAY=50} à toutes les séquences sans un {DELAY=

Sélectionner les nœuds :

(//DefaultSequence | //KeystrokeSequence)[not(contains(., '{DELAY=')) and (. != '')]

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

^(.*)$

Remplacer par :

{DELAY=50}$1

Options :

☑ Expression régulière

Ajoute un {DELAY=50} à tous les remplacements et associations de séquence de saisie automatique qui ne contiennent déjà aucun {DELAY= et qui ne sont pas vides.

Notez que la sélection du nœud est sensible à la casse (indépendamment de l'option de sensibilité à la casse des données), vous devez donc vous assurer que tous les codes {DELAY= sont en majuscules avant d'effectuer cette opération. Cela peut par exemple être fait à l'aide de l'opération de remplacement XML mentionnée ci-dessus.


Modifier les valeurs {DELAY=

Sélectionner les nœuds :

//DefaultSequence | //KeystrokeSequence

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

\{DELAY=[\d\s]*\}

Remplacer par :

{DELAY=50}

Options :

☑ Expression régulière

Positionne les valeurs de tous les codes {DELAY= dans les remplacements et les associations de séquence de saisie automatique à 50.


Supprimer {DELAY=x} de toutes les séquences

Sélectionner les nœuds :

//DefaultSequence | //KeystrokeSequence

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

\{DELAY=[\d\s]*\}

Remplacer par :

(Laisser vide)

Options :

☑ Expression régulière

Supprime tous les codes {DELAY=x} de toutes les séquences de saisie automatique.


Réinitialiser les séquences par défaut qui contiennent {DELAY=

Sélectionner les nœuds :

//DefaultSequence[contains(., '{DELAY=')]

Action :

Supprime des nœuds

Si une séquence a été spécifiée dans le champ 'Remplacer la séquence par défaut' (dans la boîte de dialogue de saisie automatique) et qu'elle contient {DELAY=, alors la séquence est réinitialisée, c'est-à-dire que l'option 'Hériter de la séquence de saisie automatique par défaut du groupe parent' est activée.


Ajouter une association de saisie automatique à toutes les entrées

Sélectionner les nœuds :

//Entry/AutoType

Action :

Remplace les données

Données :

XML externe

Que rechercher :

</AutoType>\Z

Remplacer par :

<Association><Window>* - Notepad</Window><KeystrokeSequence>{PASSWORD}</KeystrokeSequence></Association></AutoType>

Options :

☑ Expression régulière

Ajoute une association de saisie automatique à toutes les entrées : le titre de la fenêtre '* - Bloc-notes' est associé à la séquence '{PASSWORD}'.


Copier les adresses (URLs) d'entrée dans les champs Titre

Sélectionner les nœuds :

//Entry

Action :

Remplace les données

Données :

XML interne

Que rechercher :

(?s)(<Key>Title</Key>\s*)(<Value>.*?</Value>|<Value\s*/>)(.*?<Key>URL</Key>\s*)(<Value>.*?</Value>|<Value\s*/>)

Remplacer par :

$1$4$3$4

Options :

☑ Sensible à la casse
☑ Expression régulière

Copie l'adresse (URL) de l'entrée dans le champ Titre de l'entrée (en écrasant toutes les données existantes dans le champ Titre).

Si vous souhaitez que l'adresse (URL) de l'entrée soit copiée seulement si le champ titre est vide, alors utiliser ce qui suit pour 'Sélectionner les nœuds':
//Entry/String[(Key = 'Title') and (Value = '')]/..


Copier les titres des entrées dans les champs Nom d'utilisateur vides

Sélectionner les nœuds :

//Entry/String[(Key = 'UserName') and (Value = '')]/..

Action :

Remplace les données

Données :

XML interne

Que rechercher :

(?s)(<Key>Title</Key>\s*<Value>)(.*?)(</Value>.*?<Key>UserName</Key>\s*)(<Value></Value>|<Value\s*/>)

Remplacer par :

$1$2$3<Value>$2</Value>

Options :

☑ Sensible à la casse
☑ Expression régulière

Copie le titre de l'entrée dans le champ du nom d'utilisateur de l'entrée, si ce champ est vide.


S'assurer que la première ligne n'est pas vide

Sélectionner les nœuds :

//Entry/String/Value

Action :

Remplace les données

Données :

Le texte interne

Que rechercher :

(?s)^(\r?\n)

Remplacer par :

--$1

Options :

☑ Expression régulière

Pour tous les champs multilignes, cela insère '--' dans la première ligne de la valeur du champ, si cette ligne est vide et que la valeur a au moins deux lignes. Exemple :



Échantillon de données


est remplacé par

--

Échantillon de données