[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: An XML API using Java streams

  • From: Hans-Juergen Rennau <hrennau@yahoo.de>
  • To: Peter Hunsberger <peter.hunsberger@gmail.com>, Michael Kay <mike@s...>
  • Date: Sat, 24 Jun 2017 09:32:01 +0000 (UTC)

Re:  An XML API using Java streams
It's also worthwhile to recap Scala's builtin XML API. A few introductory pages:

"XPath-like Queries Against XML Documents in Scala"
Quote: "Scala comes with a powerful, purely functional xml library, which supports xml matching functionality inspired by XPath. On a first look, it seems to be quite restricted compared to XPath, as you can only query for tag and attribute names, without adding conditions on tag content or attribute values ... But this is misguided: ... "

"Basic Scala XPath searching with \ and \\":
Quote: "Use the \ and \\ methods, which are analogous to the XPath / and // expressions."

"Scala: Deeper XML parsing, and extracting XML tag attributes"
Quote: "Combine the \ and \\ methods as needed to search the XML."

"How to extract data from XML nodes in Scala"
Quote: "Use the methods of the Scala Elem and NodeSeq classes to extract the data."



Peter Hunsberger <peter.hunsberger@gmail.com> schrieb am 6:09 Samstag, 24.Juni 2017:


I was going to mention the Scala implementation possibilities, glad to are aware of them. As well as the ability to use your own operators having implicit readers and writers makes Scala a joy for handling this kind of thing. They do require you to define the data model up front (at least the parts you care about) but once you have the classes defined usage becomes pretty trivial. You stop thinking about data formats, just direct usage as needed.

On Thu, Jun 22, 2017 at 8:33 AM Michael Kay <mike@s...> wrote:

(2) A great challenge - and perhaps a hopeless one - would be to create an expressiveness which could at least be a far cry of what XPath offers. It is strange to say
     N.walk(Axis.child("city")).flatMap(Axis.attribute("name").map(Node::stringValue)
when what you really want to say is
     city/@name


Excellent point. However, dropping into another language does have all sorts of disadvantages: apart from the learning issues, there's the lack of compile-time syntax checking and type checking, the cost of dynamic compilation/interpretation, etc.

One thing to look at, perhaps, is how it translates into Scala, where you can define your own operators:

A.flatMap(B)   -->   A/B

A.attribute(B)  -->   A @ B

etc; and then we start to have something very XPath-like, but with a syntax that's compiled and validated by the host language.

Michael Kay
Saxonica 

--
Peter Hunsberger




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.