如何在ruby中使用xpath计算XML属性?
我有以下XML:如何在ruby中使用xpath计算XML属性?,ruby,xpath,Ruby,Xpath,我有以下XML: <SPEECH> <SPEAKER>ADAM</SPEAKER> <LINE>Yonder comes my master, your brother.</LINE> </SPEECH> <SPEECH> <SPEAKER>ORLANDO</SPEAKER> <LINE>Go apart, Adam, and thou shalt hear h
<SPEECH>
<SPEAKER>ADAM</SPEAKER>
<LINE>Yonder comes my master, your brother.</LINE>
</SPEECH>
<SPEECH>
<SPEAKER>ORLANDO</SPEAKER>
<LINE>Go apart, Adam, and thou shalt hear how he will</LINE>
<LINE>shake me up.</LINE>
</SPEECH>`enter code here`
<STAGEDIR>Enter OLIVER</STAGEDIR>
<SPEECH>
<SPEAKER>ADAM</SPEAKER>
<LINE>Now, sir! what make you here?</LINE>
</SPEECH>
我不熟悉Ruby,但是从名为ADAM的演讲者那里获取所有行元素的XPath是:
//SPEECH[SPEAKER='ADAM']/LINE
或者,如果您希望使用包含而不是扬声器的精确匹配:
简要说明:
//语音:在文档中的任何位置查找语音元素。。。
[containsSPEAKER'ADAM']:…其中其子元素SPEAKER包含文本'ADAM'
/行:从这些语音元素中选择子元素行
您尝试的XPath中存在一些问题:
//*[containstext,'ADAM']将匹配整个XML文档中包含文本'ADAM'的任何元素,而不仅仅是SPEAKER元素,因为它以/开头,指向根文档。你至少应该补充一点。起初
LINE不是SPEAKER的后代,因此//SPEAKER[…]//LINE将不匹配上述XML中的任何元素
//SPEECH[SPEAKER='ADAM']/LINE
//SPEECH[contains(SPEAKER, 'ADAM')]/LINE