Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
Scala XML使用属性匹配节点_Xml_Scala_Parsing_Match - Fatal编程技术网

Scala XML使用属性匹配节点

Scala XML使用属性匹配节点,xml,scala,parsing,match,Xml,Scala,Parsing,Match,我正在scala中加载一个XML文件,如下所示: <dataset> <item label="neutral" target="general" tweetid="936466790" username="B_E_X"> <content>Jim Lehrer just directed the debate audience ... 30 seconds ... #tweetdebate</content> </item&

我正在scala中加载一个XML文件,如下所示:

<dataset>
  <item label="neutral" target="general" tweetid="936466790" username="B_E_X">
    <content>Jim Lehrer just directed the debate audience ... 30 seconds ... #tweetdebate</content>
  </item>
  <item label="neutral" target="general" tweetid="936466992" username="Jonathan Fields">
    <content>Here we go. #tweetdebate</content>
  </item>
</dataset>
我还尝试了如下匹配:

myXML match { 
    case <dataset>
    {item @ <item>{theText}</item>}
    </dataset> => 
    println("An %s text: %s".format(item \ "@label", theText))
myXML匹配{
案例
{item@{theText}
=> 
println(“一个%s文本:%s”。格式(项目\“@label”,文本))

有几种方法可以做到这一点。第一个版本的问题是您没有在子节点中搜索“标签”:

您可以对具有“标签”属性的“项目”的所有子节点进行更精确的搜索:

scala> rawXML \ "item" \\ "@label"
res0: scala.xml.NodeSeq = NodeSeq(neutral, neutral)
如果您在scala中使用xml做了大量工作,那么我建议您使用。与scala的原生xml处理相比,它(在大多数情况下)提供了更好的语法和性能改进

//Note the three whitespace nodes
scala> rawXML.child.foreach(x => println(x.attribute("label")))
None
Some(neutral)
None
Some(neutral)
None
scala> rawXML \ "item" \\ "@label"
res0: scala.xml.NodeSeq = NodeSeq(neutral, neutral)