# XML hiérarchique avec logstash

**URL:** https://discuss.elastic.co/t/xml-hierarchique-avec-logstash/195878
**Category:** Discussions en français
**Created:** [August 20, 2019, 9:50am UTC](https://discuss.elastic.co/t/xml-hierarchique-avec-logstash/195878 "2019-08-20T09:50:23Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![mhd](https://avatars.discourse-cdn.com/v4/letter/m/919ad9/32.png) [@mhd](https://discuss.elastic.co/u/mhd)
#### Post date: [August 20, 2019, 9:50am UTC](https://discuss.elastic.co/t/xml-hierarchique-avec-logstash/195878/1 "2019-08-20T09:50:23Z")

</div>

Bonjour

Je cherche à analyser via logstash un fichier xml organisé hiérarchiquement comme l'exemple suivant :

```auto
<xml>
   <listniv1>
        <id_listniv1>id1_1</id_listniv1>
	    <listniv2>
	        <id_listniv2>id2_1</id_listniv2>
			<msg>
			    <id_msg>idmsg1<id_msg>
				...
		    </msg>
			<msg>
			    <id_msg>idmsg2<id_msg>
				...
		    </msg>
		</listniv2>	  
	    <listniv2>
	        <id_listniv2>id2_2</id_listniv2>
			<msg>
			    <id_msg>idmsg3<id_msg>
				...
		    </msg>
			<msg>
			    <id_msg>idmsg4<id_msg>
				...
		    </msg>
		</listniv2>	   
    </listniv1>
</xml>

```

Les événements à traiter sont identifiés par les tags `<msg>`.  
Si j'utilise le codec "multiline" pour découper les messages au niveau du tag `<msg>` je perds les infos de plus haut niveau dans la hiérarchie xml.  
Hors j'ai besoin dans le message final de retrouver l'id de la liste de niveau 1 et 2 (`</id_listniv1>` et `</id_listniv2>`) dans chaque message comme l'exemple de sortie ci-dessous :

Résultat attendu

```auto
{
  id_listniv1 : id1_1
  id_listniv2 : id2_1
  id_msg : idmsg1
  ...
}
{
  id_listniv1 : id1_1
  id_listniv2 : id2_1
  id_msg : idmsg2
  ...
}
{
  id_listniv1 : id1_1
  id_listniv2 : id2_2
  id_msg : idmsg3
  ...
}
{
  id_listniv1 : id1_1
  id_listniv2 : id2_2
  id_msg : idmsg4
  ...
}

```

Sauriez-vous comment procéder avec logstash et le plugin xmlfilter ?

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [August 27, 2019, 7:46am UTC](https://discuss.elastic.co/t/xml-hierarchique-avec-logstash/195878/2 "2019-08-27T07:46:44Z")

</div>

Pas d'idée de mon côté. Peut-être que @fbaligand en a une ? 🤗

---

<div class="post-metadata">

### Author: ![fbaligand](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fbaligand/32/5657_2.png) [@fbaligand](https://discuss.elastic.co/u/fbaligand)
#### Post date: [August 27, 2019, 8:18am UTC](https://discuss.elastic.co/t/xml-hierarchique-avec-logstash/195878/3 "2019-08-27T08:18:25Z")

</div>

J’aurais tendance à tenter ça :

- récupérer la source complète xml dans un seul événement
- utiliser xml filter pour le parser et avoir une structure arborescente dans l’événement Logstash
- utiliser le filtre “split” sur le champ [xml][listniv1][listniv2][msg] pour avoir un événement par balise msg, tout en conservant les infos racine

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [September 24, 2019, 8:18am UTC](https://discuss.elastic.co/t/xml-hierarchique-avec-logstash/195878/4 "2019-09-24T08:18:27Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
