L'ajout de l'élément XML dans le fichier XML à l'aide de sed commande dans un shell script

Je suis à l'aide de sed commande pour insérer un élément xml dans le fichier xml existant.

J'ai des fichier xml comme

<Students>
    <student>
        <name>john</>
        <id>123</id>
    </student>
    <student>
        <name>mike</name>
        <id>234</id>
    </student>
</Students>

Je veux ajouter un nouveau elememt comme

    <student>
        <name>NewName</name>
        <id>NewID</id>
    </student>

Donc mon nouveau fichier xml sera

<Students>
    <student>
        <name>john</>
        <id>123</id>
    </student>
    <student>
        <name>mike</name>
        <id>234</id>
    </student>
    <student>
        <name>NewName</name>
        <id>NewID</id>
    </student>
</Students>

Pour ce que j'ai écrit le script shell que

#! /bin/bash

CONTENT="<student>
            <name>NewName</name>
            <id>NewID</id>
        </student>"

#sed -i.bak '/<\/Students>/i \ "$CONTENT" /root/1.xml
sed -i.bak '/<\/Students>/i \'$CONTENT'/' /root/1.xml

J'obtiens l'erreur comme

sed: can't read <name>NewName</name>: No such file or directory
sed: can't read <id>NewID</id>: No such file or directory
sed: can't read </student>: No such file or directory

Et dans le fichier xml, seulement <student> est ajouté.
Les autres éléments ne sont pas ajoutés.
Personne ne sait pourquoi cette erreur?

Plusieurs outils existent pour manipuler des fichiers XML. Utiliser à la place des expressions régulières.
serait bien de vous à la liste de l'un (ou deux) de ces outils

OriginalL'auteur User007 | 2014-04-23