2016-03-22 11 views
0

Es gibt die folgende config.xml-Datei (die Datei stammt aus einem Quell-Repository, was ich nicht in einem automatisierten Prozess ändern kann; ich kann den Build-Prozess ändern, so Ideen zum Extrahieren von zwei Eigenschaften die androidversionCode und die iosCFBundleVersion, würde geschätztxmllint -Eigenschaft mit xmlns in bash erhalten

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.company.project" version="1.2.8" androidversionCode="209" iosCFBundleVersion="209" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name>Project name</name> 
    <description>Project description</description> 
</widget> 

Was ich versuche.

$ xmllint --xpath "string(//widget/@id)" config.xml 

das funktioniert nur, wenn xmlns = "http://www.w3.org/ns/widgets" ist aus der Datei entfernt. Wenn ich xmlns = "" dann funktioniert es auch, aber ich fand keine anderen Fälle, die ich t würde ID oder irgendeinen Versionscode zurückgeben. Also, Xmlns = "etwas" macht Xpath scheitern, oder?

Wie kann ich das machen und diese Versionsnummern holen?

+1

Verwandte: http://stackoverflow.com/questions/8264134/xmllint-failing-to-properly-query-with-xpath – har07

Antwort

0

und die Auflösung ist:

xmllint --xpath 'string(//*[local-name()="widget"]/@id)' config.xml