Nhận giá trị từ tệp .XML trong Linux


5
  • Bất cứ ai cũng có một giải pháp tốt cho việc này:

  • Tôi muốn giá trị: /PlayDirList/PlayDir.1378803204từ XML này.

    <settings>
    
        <setting id="ask_set_logo_to_bg" value="false" />
        <setting id="check_update_interval" value="0" />
        <setting id="clientid" value="DMDS-MVG-0001" />
        <setting id="guinotify" value="false" />
        <setting id="pil_is_broken" value="false" />
        <setting id="playdir" value="/PlayDirList/PlayDir.1378803204" />
        <setting id="runonstartup" value="true" />
        <setting id="schedule_poweroff" value="false" />
        <setting id="schedule_poweroff1" value="false" />
        <setting id="schedule_poweroff2" value="false" />
        <setting id="schedule_poweroff_custom" value="false" />
        <setting id="schedule_poweroff_from_day0" value="1" />
        <setting id="schedule_poweroff_from_day1" value="5" />
        <setting id="schedule_poweroff_from_day2" value="5" />
        <setting id="schedule_poweroff_hour0" value="23" />
        <setting id="schedule_poweroff_hour1" value="23" />
        <setting id="schedule_poweroff_hour2" value="23" />
        <setting id="schedule_poweroff_min0" value="0" />
        <setting id="schedule_poweroff_min1" value="0" />
        <setting id="schedule_poweroff_min2" value="0" />
        <setting id="schedule_poweroff_to_day0" value="0" />
        <setting id="schedule_poweroff_to_day1" value="6" />
        <setting id="schedule_poweroff_to_day2" value="0" />
        <setting id="stat_report_interval" value="600" />
        <setting id="sync_screenshot" value="true" />
        <setting id="use_external_downloader" value="true" />
        <setting id="boot_time" value="2013-10-07 09:29:23" />
    </settings>
  • Đó là một hộp Linux và tôi không muốn cài đặt bất kỳ ứng dụng bổ sung nào để hoàn thành nó. Vì vậy, một giải pháp perl, python hoặc bash tốt đẹp được ưa thích.

Câu trả lời:


7

Bạn có thể sử dụng xmllintvà XPATH cho điều đó:

xmllint --xpath //setting[id='playdir']/@value xmlfilename.xml

hoặc nếu bạn đang sử dụng python,

import libxml2

doc = libxml2.parseFile('foo.xml')
for setting in doc.xpathEval('//setting[id="playdir"]'):
  print setting.prop('value')

0
gawk '/id="playdir"/{match($0,/value="[^"]*/); print substr($0, RSTART+7,RLENGTH-7)}'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.