September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
78
Task/XML-XPath/Gastona/xml-xpath.gastona
Normal file
78
Task/XML-XPath/Gastona/xml-xpath.gastona
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
#javaj#
|
||||
|
||||
<frames> oSal, XML Path sample, 300, 400
|
||||
|
||||
#data#
|
||||
|
||||
<xml>
|
||||
//<inventory title="OmniCorp Store #45x10^3">
|
||||
// <section name="health">
|
||||
// <item upc="123456789" stock="12">
|
||||
// <name>Invisibility Cream</name>
|
||||
// <price>14.50</price>
|
||||
// <description>Makes you invisible</description>
|
||||
// </item>
|
||||
// <item upc="445322344" stock="18">
|
||||
// <name>Levitation Salve</name>
|
||||
// <price>23.99</price>
|
||||
// <description>Levitate yourself for up to 3 hours per application</description>
|
||||
// </item>
|
||||
// </section>
|
||||
// <section name="food">
|
||||
// <item upc="485672034" stock="653">
|
||||
// <name>Blork and Freen Instameal</name>
|
||||
// <price>4.95</price>
|
||||
// <description>A tasty meal in a tablet; just add water</description>
|
||||
// </item>
|
||||
// <item upc="132957764" stock="44">
|
||||
// <name>Grob winglets</name>
|
||||
// <price>3.56</price>
|
||||
// <description>Tender winglets of Grob. Just add water</description>
|
||||
// </item>
|
||||
// </section>
|
||||
//</inventory>
|
||||
|
||||
<DEEP_SQL_XML>
|
||||
DEEP DB, SELECT, xmelon_data
|
||||
,, path pathStr
|
||||
,, tag tagStr
|
||||
,, patCnt
|
||||
,, dataPlace
|
||||
,, value
|
||||
|
||||
#listix#
|
||||
|
||||
<main>
|
||||
//parsing xml data ...
|
||||
GEN, :mem datos, xml
|
||||
XMELON, FILE2DB, :mem datos
|
||||
//
|
||||
//first item ...
|
||||
//
|
||||
//
|
||||
LOOP, SQL,, //SELECT patCnt AS patITEM1 FROM (@<DEEP_SQL_XML>) WHERE path_pathStr == '/inventory/section/item' LIMIT 1
|
||||
,HEAD, //<item
|
||||
,, LOOP, SQL,, //SELECT * FROM (@<DEEP_SQL_XML>) WHERE patCnt == @<patITEM1> AND dataPlace == 'A'
|
||||
,, , LINK, ""
|
||||
,, ,, // @<tag_tagStr>="@<value>"
|
||||
,, //>
|
||||
,, //
|
||||
,, LOOP, SQL,, //SELECT * FROM (@<DEEP_SQL_XML>) WHERE patCnt == @<patITEM1> AND dataPlace != 'A'
|
||||
,, ,, // <@<tag_tagStr>>@<value></@<tag_tagStr>>
|
||||
,TAIL, //
|
||||
,TAIL, //</item>
|
||||
//
|
||||
//
|
||||
//report prices ...
|
||||
//
|
||||
LOOP, SQL,, //SELECT value FROM (@<DEEP_SQL_XML>) WHERE tag_tagStr == 'price'
|
||||
, LINK, ", "
|
||||
,, @<value>
|
||||
//
|
||||
//put names into a variable
|
||||
//
|
||||
VAR=, tabnames, "name"
|
||||
LOOP, SQL,, //SELECT value FROM (@<DEEP_SQL_XML>) WHERE tag_tagStr == 'name'
|
||||
, LINK, ""
|
||||
,, VAR+, tabnames, @<value>
|
||||
DUMP, data,, tabnames
|
||||
63
Task/XML-XPath/Kotlin/xml-xpath.kotlin
Normal file
63
Task/XML-XPath/Kotlin/xml-xpath.kotlin
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
// version 1.1.3
|
||||
|
||||
import javax.xml.parsers.DocumentBuilderFactory
|
||||
import org.xml.sax.InputSource
|
||||
import java.io.StringReader
|
||||
import javax.xml.xpath.XPathFactory
|
||||
import javax.xml.xpath.XPathConstants
|
||||
import org.w3c.dom.Node
|
||||
import org.w3c.dom.NodeList
|
||||
|
||||
val xml =
|
||||
"""
|
||||
<inventory title="OmniCorp Store #45x10^3">
|
||||
<section name="health">
|
||||
<item upc="123456789" stock="12">
|
||||
<name>Invisibility Cream</name>
|
||||
<price>14.50</price>
|
||||
<description>Makes you invisible</description>
|
||||
</item>
|
||||
<item upc="445322344" stock="18">
|
||||
<name>Levitation Salve</name>
|
||||
<price>23.99</price>
|
||||
<description>Levitate yourself for up to 3 hours per application</description>
|
||||
</item>
|
||||
</section>
|
||||
<section name="food">
|
||||
<item upc="485672034" stock="653">
|
||||
<name>Blork and Freen Instameal</name>
|
||||
<price>4.95</price>
|
||||
<description>A tasty meal in a tablet; just add water</description>
|
||||
</item>
|
||||
<item upc="132957764" stock="44">
|
||||
<name>Grob winglets</name>
|
||||
<price>3.56</price>
|
||||
<description>Tender winglets of Grob. Just add water</description>
|
||||
</item>
|
||||
</section>
|
||||
</inventory>
|
||||
"""
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val dbFactory = DocumentBuilderFactory.newInstance()
|
||||
val dBuilder = dbFactory.newDocumentBuilder()
|
||||
val xmlInput = InputSource(StringReader(xml))
|
||||
val doc = dBuilder.parse(xmlInput)
|
||||
val xpFactory = XPathFactory.newInstance()
|
||||
val xPath = xpFactory.newXPath()
|
||||
|
||||
val qNode = xPath.evaluate("/inventory/section/item[1]", doc, XPathConstants.NODE) as Node
|
||||
val upc = qNode.attributes.getNamedItem("upc")
|
||||
val stock = qNode.attributes.getNamedItem("stock")
|
||||
println("For the first item : upc = ${upc.textContent} and stock = ${stock.textContent}")
|
||||
|
||||
val qNodes = xPath.evaluate("/inventory/section/item/price", doc, XPathConstants.NODESET) as NodeList
|
||||
print("\nThe prices of each item are : ")
|
||||
for (i in 0 until qNodes.length) print("${qNodes.item(i).textContent} ")
|
||||
println()
|
||||
|
||||
val qNodes2 = xPath.evaluate("/inventory/section/item/name", doc, XPathConstants.NODESET) as NodeList
|
||||
val names = Array<String>(qNodes2.length) { qNodes2.item(it).textContent }
|
||||
println("\nThe names of each item are as follows :")
|
||||
println(" ${names.joinToString("\n ")}")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue