Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ruby中使用xpath计算XML属性?_Ruby_Xpath - Fatal编程技术网

如何在ruby中使用xpath计算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

我有以下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 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