首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Scala获得与唯一节点相邻的节点?

如何使用Scala获得与唯一节点相邻的节点?
EN

Stack Overflow用户
提问于 2018-06-07 03:33:45
回答 2查看 0关注 0票数 0

我正试图解析一个Apple plist文件,我需要在其中得到一个数组节点。不幸的是,它唯一的唯一标识符是它前面的兄弟节点,<key>ProvisionedDevices</key>。现在,我最好的想法是使用Java的XPath查询或Node.indexOf

以下是一个例子:

代码语言:txt
复制
<plist version="1.0">
       <dict>
               <key>ApplicationIdentifierPrefix</key>
               <array>
                       <string>RP8CBF4MRE</string>
               </array>
               <key>CreationDate</key>
               <date>2010-05-10T11:44:35Z</date>
               <key>DeveloperCertificates</key>
               <array>
               ...
               <key>ProvisionedDevices</key>
               <array>
               ... // I need the Nodes here
               </array>
       </dict>
</plist>
EN

回答 2

Stack Overflow用户

发布于 2018-06-07 12:28:12

这样做是可行的:

代码语言:txt
复制
def findArray(key: Elem, xml: Elem) = {
  val components = xml \ "dict" \ "_"
  val index = components.zipWithIndex find (_._1 == key) map (_._2)
  index map (_ + 1) map components
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-07 12:52:54

代码语言:txt
复制
  /**
   * Takes in plist key-value format and returns a Map[String, Seq[Node]]
   */
  def plistToMap(nodes:Seq[Node]) = {
    nodes.grouped(2).map {
      case Seq(keyNode, elementNode) => (keyNode.text, elementNode)
    }.toMap
  }

然后你可以这样使用它:

代码语言:txt
复制
println(plistToMap(xml \\ "dict" \ "_").get("ProvisionedDevices"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档