xml解析和返回对象列表

xml解析和返回对象列表,xml,scala,Xml,Scala,在scala中,是否有一种简单的方法可以将XML文档的所有元素表示为列表 我的代码: object HelloWorld { def main(args: Array[String]) { val res="76561193756669631" val url=("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXYYYZZZ&steamids="+res+"&

在scala中,是否有一种简单的方法可以将XML文档的所有元素表示为列表

我的代码:

object HelloWorld {

    def main(args: Array[String]) {
    val res="76561193756669631"
    val url=("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXYYYZZZ&steamids="+res+"&format=xml")
    val str = scala.io.Source.fromURL(url.toString,"utf-8").mkString
    val x=xml.XML.loadString(str)
    var r=(x\\"steamid").mkString
    r=r.replaceAll("""<[a-zA-Z0-9/]*?>""","")
    println(r)

}}

以下是获得这些元素所需的操作:

  import scala.xml._
  val x = <response>
    <players>
      <player>
        <steamid>76561193756669631</steamid>
        <communityvisibilitystate>3</communityvisibilitystate>
        <personaname>*******je01</personaname>
        <lastlogoff>1320236285</lastlogoff>
        <profileurl>
          http://steamcommunity.com/profiles/76561193756669631/
        </profileurl>
        <avatar>
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg
        </avatar>
        <avatarmedium>
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg
        </avatarmedium>
        <avatarfull>
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg
        </avatarfull>
        <personastate>0</personastate>
        <primaryclanid>103582791429521408</primaryclanid>
        <timecreated>1320224696</timecreated>
        <personastateflags>0</personastateflags>
      </player>
    </players>
  </response>

  val allNodes = x \\ "response" \\ "players" \\ "player"  flatMap(_.child)
  allNodes.foreach(n => println(s"label: ${n.label} -> text: ${n.text}"))

这正是我想要的,但我不知道
标签:#PCDATA->text:
是从哪里来的。当我查看源代码时,我根本看不到它。它是否以某种方式隐藏在XML中?如果是这样的话,我可以把它过滤掉吗?这里:
println(s“label:${n.label}->text:${n.text}”)
这是Scala中字符串的糖。allNodes是NodeSeq,您可以对其进行迭代。您看到的是close标记和open标记之间的文本。在本例中,只有白色字符(空格和新行),但是如果您在
之间放置一些文本,您将在输出中看到它作为
#PCDATA
。您可以使用以下内容将其过滤掉:
x\\“response”\\“players”\\“player”平面图(\.child)过滤器(!\.isAtom)
steamid: 76561193756669631
communityvisibilitystate: 3
personaname: *******je01
....
  import scala.xml._
  val x = <response>
    <players>
      <player>
        <steamid>76561193756669631</steamid>
        <communityvisibilitystate>3</communityvisibilitystate>
        <personaname>*******je01</personaname>
        <lastlogoff>1320236285</lastlogoff>
        <profileurl>
          http://steamcommunity.com/profiles/76561193756669631/
        </profileurl>
        <avatar>
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg
        </avatar>
        <avatarmedium>
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg
        </avatarmedium>
        <avatarfull>
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg
        </avatarfull>
        <personastate>0</personastate>
        <primaryclanid>103582791429521408</primaryclanid>
        <timecreated>1320224696</timecreated>
        <personastateflags>0</personastateflags>
      </player>
    </players>
  </response>

  val allNodes = x \\ "response" \\ "players" \\ "player"  flatMap(_.child)
  allNodes.foreach(n => println(s"label: ${n.label} -> text: ${n.text}"))
label: #PCDATA -> text: 

label: steamid -> text: 76561193756669631
label: #PCDATA -> text: 

label: communityvisibilitystate -> text: 3
label: #PCDATA -> text: 

label: personaname -> text: *******je01
label: #PCDATA -> text: 

label: lastlogoff -> text: 1320236285
label: #PCDATA -> text: 

label: profileurl -> text: 
          http://steamcommunity.com/profiles/76561193756669631/

label: #PCDATA -> text: 

label: avatar -> text: 
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg

label: #PCDATA -> text: 

label: avatarmedium -> text: 
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg

label: #PCDATA -> text: 

label: avatarfull -> text: 
          https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg

label: #PCDATA -> text: 

label: personastate -> text: 0
label: #PCDATA -> text: 

label: primaryclanid -> text: 103582791429521408
label: #PCDATA -> text: 

label: timecreated -> text: 1320224696
label: #PCDATA -> text: 

label: personastateflags -> text: 0
label: #PCDATA -> text: