Как я могу получить Узел, смежный с уникальным Узлом с помощью Scala?

Я пытаюсь проанализировать Apple plist файл, и я должен получить Узел массива в нем. К сожалению, его единственным уникальным идентификатором является одноуровневый Узел прямо перед ним, <key>ProvisionedDevices</key>. Прямо сейчас мои лучшие мысли состоят в том, чтобы использовать запросы XPath Java или Node.indexOf.

Вот пример:

<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>

Спасибо!

5
задан pr1001 10 May 2010 в 18:49
поделиться

2 ответа

Это работает:

def findArray(key: Elem, xml: Elem) = {
  val components = xml \ "dict" \ "_"
  val index = components.zipWithIndex find (_._1 == key) map (_._2)
  index map (_ + 1) map components
}
5
ответ дан 13 December 2019 в 22:03
поделиться
  /**
   * 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
  }

Тогда вы можете использовать его так:

println(plistToMap(xml \\ "dict" \ "_").get("ProvisionedDevices"))
5
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: