ile benzersiz anahtar etiketi sonra dize metni ayıklamak nasıl plut XML dosyaları xmlstartlet
üzerinden sorgulamak istiyorum. etiketindenetiketi düzgün bir key
etiketi sonra arıyorum. XML dosyası Ben mesela sonra Bu yolda dize değeri arıyorum Her durumdaÖzet dosyaları xmlstarlet aracı
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>15B42</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
.
.
.
</dict>
</plist>
veya
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<othertag>
<dict>
<key>BuildMachineOSBuild</key>
<string>15B42</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
.
.
.
</dict>
</othertag>
</plist>
benzeyebilir CFBundleDevelopmentRegion
anahtarı (bu durumda en
).
Bu nedenle, hizinin oluştuğu hiyerarşideki yer bilinmemektedir (/plist/dict
veya /plist/another/dict
veya başka bir yerde olabilir), ancak anahtar metin tüm dosyada benzersizdir.
Ben
xmlstarlet sel -t -v '//string/following::key[text()="CFBundleDevelopmentRegion"]' myfile.plist
denedi ama herhangi bir çıktı alamadım. XPath'ım yanlış mı yoksa xmlstarlet
'a başka parametreler belirtmek zorunda mıyım? //key[.='CFBundleDevelopmentRegion']/following-sibling::string[1]
XPath yerde içerik "CFBundleDevelopmentRegion"
eşittir XML belgesine, içinde, key
elemanı bulacaksınız, sonra yakın aşağıdaki-kardeş string
elemanı döndürür:
Bu işi mükemmel! – halloleo