Back to list
sebc-dev

xml-handler

by sebc-dev

0🍴 0📅 Dec 31, 2025

SKILL.md


name: xml-handler description: Manipuler TOUS les fichiers XML quelle que soit leur taille. TOUJOURS utiliser ce workflow pour tout fichier .xml. Mots-clés: XML, xpath, xmllint, xmlstarlet, extraction, structure, modification. allowed-tools: Bash(xmllint:), Bash(xmlstarlet:), Bash(head:), Bash(wc:), Bash(grep:), Bash(cat:)

Manipulation des Fichiers XML

Prérequis

sudo apt install libxml2-utils xmlstarlet

RÈGLE D'OR

TOUJOURS utiliser xmllint/xmlstarlet pour manipuler les fichiers XML :

  • Économie de tokens (pas de lecture du contenu dans le contexte)
  • Modification directe via XPath
  • Ne JAMAIS utiliser Read/Edit sur un fichier XML

Workflow en 3 Étapes

Étape 1 : Reconnaissance (structure uniquement)

# Compter les lignes
wc -l fichier.xml

# Aperçu des 100 premières lignes
head -100 fichier.xml

# Arbre des balises (structure hiérarchique)
xmllint --format fichier.xml 2>/dev/null | grep -E "^[[:space:]]*<[^/!?]" | head -50

# Lister toutes les balises uniques
xmlstarlet el fichier.xml | sort -u

# Compter les occurrences de chaque balise
xmlstarlet el fichier.xml | sort | uniq -c | sort -rn

Étape 2 : Extraction Ciblée (lecture minimale)

# Extraire une section spécifique
xmllint --xpath "//configuration/database" fichier.xml

# Extraire la valeur d'un élément
xmlstarlet sel -t -v "//element/child" fichier.xml

# Extraire un attribut
xmlstarlet sel -t -v "//element/@attribut" fichier.xml

# Extraire avec condition
xmlstarlet sel -t -c "//item[@price>100]" fichier.xml

Étape 3 : Modification Directe (sans lire le fichier)

# Modifier la valeur d'un élément
xmlstarlet ed -u "//database/host" -v "nouveau-host" fichier.xml > fichier-modifie.xml

# Modifier en place (écrase le fichier)
xmlstarlet ed -L -u "//database/host" -v "nouveau-host" fichier.xml

# Modifier un attribut
xmlstarlet ed -L -u "//element/@attr" -v "nouvelle-valeur" fichier.xml

# Ajouter un élément
xmlstarlet ed -L -s "//parent" -t elem -n "nouveau" -v "contenu" fichier.xml

# Ajouter un attribut
xmlstarlet ed -L -i "//element" -t attr -n "nouvel-attr" -v "valeur" fichier.xml

# Supprimer un élément
xmlstarlet ed -L -d "//element-a-supprimer" fichier.xml

# Renommer une balise
xmlstarlet ed -L -r "//ancien-nom" -v "nouveau-nom" fichier.xml

Référence Rapide xmlstarlet ed

ActionOptionExemple
Update-u XPATH -v VALUE-u "//host" -v "localhost"
Delete-d XPATH-d "//deprecated"
Insert attr-i XPATH -t attr -n NAME -v VAL-i "//el" -t attr -n "id" -v "1"
Insert elem-s PARENT -t elem -n NAME -v VAL-s "//root" -t elem -n "new" -v ""
Rename-r XPATH -v NEWNAME-r "//old" -v "new"
In-place-LÉcrase le fichier original

Référence XPath

BesoinExpression
Élément racine/*
Tous les X//X
Enfant direct/parent/enfant
Attribut//element/@attr
Valeur texte//element/text()
Avec condition//item[@price>100]
Premier(//item)[1]
Position//item[position()<=5]

Validation

# Vérifier syntaxe XML
xmllint --noout fichier.xml && echo "OK" || echo "INVALIDE"

# Valider contre XSD
xmllint --schema schema.xsd fichier.xml --noout

Formatage

# Indenter
xmllint --format fichier.xml > formatted.xml

# Compacter
xmllint --noblanks fichier.xml > compact.xml

Score

Total Score

35/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

0/5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon