我有這個xmlfile.xml:
<events>
<event id="30">
<event_cod>30</event_cod>
<event_key>KEY_A</event_key>
</event>
<event id="23">
<event_cod>23</event_cod>
<event_key>KEY_I</event_key>
</event>
<event id="16">
<event_cod>16</event_cod>
<event_key>KEY_Q</event_key>
</event>
</events>
我有設備,當我按下一個鍵時,該設備會生成一個 event_code(30、23、16 等)
device = evdev.InputDevice('/dev/input/eventX')
for event in device.read_loop():
if event.value == 1:
import xml.etree.ElementTree as ET
tree = ET.parse('/xmlfile.xml')
for child in tree.getroot():
for core in child:
core_value = str(core.text)
if event.code == ????????(core_value = 30, 23, 16 etc.):
get_xml = ET.parse('/xmlfile.xml')
xml_content = get_xml.getroot()
print('You Pressed " xml_content[0][1].text " Key!')
這是我第一次用 Python 編程(我是 PHP 人......),此時我被困住了:(
你能幫我解決一下如何為 XML 中的每個專案生成它嗎
if event.code == ...
uj5u.com熱心網友回復:
這并不能完全回答您創建事件處理程式的問題,但是從我推斷出您可能喜歡這種方法的一般代碼中。
您可以非常方便地使用lxmlXPath 謂詞來匹配 XML 檔案的元素:
import evdev
import lxml.etree as ET
tree = ET.parse('xmlfile.xml')
device = evdev.InputDevice('/dev/input/event2')
print(device)
for event in device.read_loop():
if event.value == 1:
res = tree.xpath('/events/event[@id=' repr(event.code) ']/event_key')
if len(res) > 0:
print('You Pressed ' res[0].text ' Key!')
在上面的代碼中,XML 檔案xmlfile.xml被決議然后用 XPath-1.0 運算式進行查詢
/events/event[@id=' repr(event.code) ']/event_key
然后repr轉換event.code為字串值。謂詞[@id=...]選擇適當的event節點,然后獲取其event_key元素 - 這是一個串列。之后,如果存在,則此串列的第一項由 選擇res[0],其文本值分別由選擇res[0].text。進行長度檢查res是為了確保您的 XML 檔案中存在匹配的條目。
該示例以鍵盤設備為例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/495847.html
下一篇:為什么約束布局的邊距不適用?
