2016-05-26 8 views
0

Ich habe jetzt mit der folgenden Aufgabe zu kämpfen. Ich versuche, leeren XML-Eintrag mit XMLStarlet zu entfernen.XPATH und XMLStarlet

Was ich versuche, ist dieses XPATH zu verwenden:

//*[not(./*) and (not(./text()) or normalize-space(./text())='')] 

ich es auf http://www.freeformatter.com/xpath-tester.html getestet haben und es funktioniert wie erwartet. Gepaart mit xmlstarlet funktioniert nicht:

xmlstarlet ed -d '//*[not(./*) and (not(./text()) or normalize-space(./text())='')]' 

Was ist der Grund dafür sein könnte?

+0

In welcher Weise es hat nicht funktioniert? Bitte liefern Sie Beispiel-XML zum Testen ... – har07

Antwort

1

Versuchen Sie, Anführungszeichen in doppelten Anführungszeichen zu verwenden oder umgekehrt.

Für Ihr Beispiel:

xmlstarlet ed -d '//*[not(./*) and (not(./text()) or normalize-space(./text())="")]' 

oder

xmlstarlet ed -d "//*[not(./*) and (not(./text()) or normalize-space(./text())='')]" 
+0

Hallo, ich habe es überprüft und es funktioniert wie erwartet. Danke vielmals. –