0
下面是一個XML的示例:調理的xpath,LXML
<w:p>
<w:r>
<w:rPr>
<w:b/>
<w:t> There was a rich girl </w:t>
</w:r>
<w:r>
<w:rPr>
<w:bCs/>
<w:t> Nananananan </w:t>
</w:r>
<w:r>
<w:rPr>
<w:b/>
<w:bCs/>
<w:t>If I had all the money in the world </w:t>
</w:r>
</w:p>
我希望文本"There was a rich girl Nanananan"
要被提取,但不"If i had all the money.."
我需要提取對應於文本要麼<w:b>
或<w:bCs>
標籤,但如果兩者都出現在一起,我需要跳過提取。
換句話說,僅在存在w:bCs
或w:b
時提取文本。
我所做的是:
text2=" "
w = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'
for r in p.xpath('.//w:t',namespaces={'w': w}):
if r.xpath('..//w:b|..//w:bCs[@w:val="0"]',namespaces={'w': w}):
text2 += r.text
這只是檢查是否寬:B或寬:BCS存在(並匹配即使雙方都存在)。我如何添加排他性條件?
嗨,我已經編輯我的問題有點。你可以看看,請..上述代碼似乎並沒有工作.. –
嗨,看到更新的答案。 –
謝謝你的工作..不能用這個表達式作爲上面的第一個?我想提取w:b或w:bCs [@w:val =「0」],如果w:b和w:bCs(不考慮val)一起出現,則不提取。我修改你的第一個表達式爲:'(..//w:b|..//w:bCs[@w:val="0"]ccount(./..//w:b|./。 ./w:bCs)=1])' 但它不起作用。爲什麼? –