June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
57
Task/XML-XPath/C/xml-xpath.c
Normal file
57
Task/XML-XPath/C/xml-xpath.c
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/*Abhishek Ghosh, 10th March 2018*/
|
||||
|
||||
#include <libxml/parser.h>
|
||||
#include <libxml/xpath.h>
|
||||
|
||||
xmlDocPtr getdoc (char *docname) {
|
||||
xmlDocPtr doc;
|
||||
doc = xmlParseFile(docname);
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
xmlXPathObjectPtr getnodeset (xmlDocPtr doc, xmlChar *xpath){
|
||||
|
||||
xmlXPathContextPtr context;
|
||||
xmlXPathObjectPtr result;
|
||||
|
||||
context = xmlXPathNewContext(doc);
|
||||
|
||||
result = xmlXPathEvalExpression(xpath, context);
|
||||
xmlXPathFreeContext(context);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
if (argc <= 2) {
|
||||
printf("Usage: %s <XML Document Name> <XPath expression>\n", argv[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *docname;
|
||||
xmlDocPtr doc;
|
||||
xmlChar *xpath = (xmlChar*) argv[2];
|
||||
xmlNodeSetPtr nodeset;
|
||||
xmlXPathObjectPtr result;
|
||||
int i;
|
||||
xmlChar *keyword;
|
||||
|
||||
docname = argv[1];
|
||||
doc = getdoc(docname);
|
||||
result = getnodeset (doc, xpath);
|
||||
if (result) {
|
||||
nodeset = result->nodesetval;
|
||||
for (i=0; i < nodeset->nodeNr; i++) {
|
||||
xmlNodePtr titleNode = nodeset->nodeTab[i];
|
||||
keyword = xmlNodeListGetString(doc, titleNode->xmlChildrenNode, 1);
|
||||
printf("Value %d: %s\n",i+1, keyword);
|
||||
xmlFree(keyword);
|
||||
}
|
||||
xmlXPathFreeObject (result);
|
||||
}
|
||||
xmlFreeDoc(doc);
|
||||
xmlCleanupParser();
|
||||
return 0;
|
||||
}
|
||||
37
Task/XML-XPath/Perl-6/xml-xpath.pl6
Normal file
37
Task/XML-XPath/Perl-6/xml-xpath.pl6
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
use XML::XPath;
|
||||
|
||||
my $XML = XML::XPath.new(xml => q:to/END/);
|
||||
<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>
|
||||
END
|
||||
|
||||
put "First item:\n", $XML.find('//item[1]')[0];
|
||||
|
||||
put "\nPrice elements:";
|
||||
.contents.put for $XML.find('//price').List;
|
||||
|
||||
put "\nName elements:\n", $XML.find('//name')».contents.join: ', ';
|
||||
Loading…
Add table
Add a link
Reference in a new issue