/ / Xpath przetwarzanie przy użyciu Scala - xml, scala, xpath

Przetwarzanie Xpath przy użyciu Scala - xml, scala, xpath

Jestem nowy w Scali i próbuję zrozumieć możliwości Scali w odniesieniu do przetwarzania xml przy użyciu xpaths.

Idę jednak Proste zapytanie Xpath w scala wydaje się, że jeśli spróbuję użyć xpath do wyodrębnienia wartości z xml jak - elem \ "/ BCXYZ / abc / def"- używając Scali, to nie zadziała.

Mogę chociaż użyć czegoś takiego elem \ "BCXYZ" "abc" "def" gdzie elem jest obiektem scala.xml.Elem (reprezentującym xml, z którego chcę wyodrębnić wartość xpath).

Czy ktoś może potwierdzić, proszę.

Odpowiedzi:

1 dla odpowiedzi № 1

Zgodnie z przyjętą odpowiedzią, Scala XML nie ma wbudowanego XPath. Ma coś, co wygląda na XPath dla bardzo prostej ekstrakcji ścieżek i, tak, nie działa tak, jak chcesz.

Istnieją co najmniej dwie inne biblioteki XML dla Scala, z których jeden ma pełną obsługę XPath.


1 dla odpowiedzi nr 2

Nie podoba mi się wersja XML standardowej biblioteki. Jeśli próbujesz wykonać wyrażenia XPath, mogę zasugerować kantan.xpath?

Pozwala pisać takie rzeczy jak:

import kantan.xpath.ops._

new java.io.File("input.xml").evalXPath[List[Int]]("//@id")

Spowoduje to zrobienie tego, czego oczekujesz: przeanalizuj input.xml jako dokument XML, poszukaj wszystkich elementów, które mają id atrybut i wyodrębnij ten atrybut jako Int, przechowując wszystkie wartości w List.


0 dla odpowiedzi № 3

Podobny do XML

 <BCXYZ>
<abc>
<def>
text
</def>
</abc>
</BCXYZ>

Zapytanie zadziała tak, jak zostało to określone

scala> elem \ "BCXYZ"  "abc"  "def"
res20: scala.xml.NodeSeq =
NodeSeq(<def>
text
</def>)