2015-12-06 1 views
0

[У меня есть слово DOC XML как:Извлечение атрибутов условно и рекурсивно для слова документа XML с помощью XPath в рубин

<w:document> 
 
    <w:body> 
 
    <w:p w14:paraId="5B6351BB" w14:textId="0D9644FF" w:rsidR="00432348" w:rsidRDefault="00432348" w:rsidP="00432348"> 
 
     <w:pPr> 
 
     <w:pStyle w:val="Heading1"/> 
 
     </w:pPr> 
 
     <w:bookmarkStart w:id="27" w:name="_Toc435537885"/> 
 
     <w:r> 
 
     <w:t>TESTPLAN</w:t> 
 
     </w:r> 
 
     <w:bookmarkEnd w:id="26"/> 
 
     <w:r w:rsidR="00B46E57"> 
 
     <w:t xml:space="preserve"> – PART I</w:t> 
 
     </w:r> 
 
     <w:bookmarkEnd w:id="27"/> 
 
    </w:p> 
 
     </w:body> 
 
    <w:document>

Я хочу, чтобы извлечь текст для Heading1, таким образом, написал следующий код, но он, похоже, не работает. @doc.xpath('//w:document//w:body//w:p[w:pPr//w:pStyle[@val]="Heading1"]//w:r//w:t') Вместо @val, я пробовал @w:val, а также вместо "Heading" Я пробовал 'Heading' для сравнения. Но все же он возвращает значение nil.

+0

Глядя на XML, то, что в соответствии с вами значение '«Заголовок1»', что вы ожидаете, что ваш код, чтобы вернуться? –

+0

TESTPLAN i.e значение user3564927

ответ

0

Вы набрали неправильную часть w:pStyle[@w:val]="Heading1". Он должен быть w:pStyle/@w:val="Heading1". Тогда это сработает.

Правильный XPATH:

//w:document//w:body//w:p[w:pPr//w:pStyle/@w:val="Heading1"]//w:r//w:t 
Смежные вопросы