[libgeexml] Add parse_string method and test
- From: Roberto Majadas <telemaco src gnome org>
- To: svn-commits-list gnome org
- Subject: [libgeexml] Add parse_string method and test
- Date: Sat, 4 Jul 2009 16:22:29 +0000 (UTC)
commit b11dfcdd00c3719ecfc41404f7ffd1fdb6f367c8
Author: Roberto Majadas <roberto majadas openshine com>
Date: Sat Jul 4 18:21:18 2009 +0200
Add parse_string method and test
geexml/ElementTree.vala | 13 ++++++++++++
test/Makefile.am | 9 ++++++++
test/test-xmlreader-string.vala | 41 +++++++++++++++++++++++++++++++++++++++
3 files changed, 63 insertions(+), 0 deletions(-)
---
diff --git a/geexml/ElementTree.vala b/geexml/ElementTree.vala
index 777778f..f9c4801 100644
--- a/geexml/ElementTree.vala
+++ b/geexml/ElementTree.vala
@@ -66,6 +66,19 @@ namespace Gee.XmlEtree {
throw new Error.XML_DOCUMENT_EMPTY( "the xml'%s' is empty", path );
}
}
+
+ public void parse_string( string xml_data ) throws Error {
+ this._doc = Parser.parse_memory( xml_data, (int) xml_data.size() );
+ if ( this._doc == null ) {
+ throw new Error.FILE_NOT_FOUND( "It's not posible to parse this string" );
+ }
+
+ this.node = this._doc->get_root_element( );
+ if ( this.node == null ) {
+ delete this._doc;
+ throw new Error.XML_DOCUMENT_EMPTY( "the xml string is empty" );
+ }
+ }
public void write( string path ) {
if ( this._doc == null ) {
diff --git a/test/Makefile.am b/test/Makefile.am
index cd8a2c6..d8ffbe0 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -39,5 +39,14 @@ $(test_xpath_SOURCES): $(test_xpath_VALASOURCES)
test_xpath_LDADD = $(progs_ldadd)
EXTRA_DIST += $(test_xpath_VALASOURCES)
+TEST_PROGS += test-xmlreader-string
+test_xmlreader_string_VALASOURCES = test-xmlreader-string.vala
+test_xmlreader_string_SOURCES = test-xmlreader-string.c
+$(test_xmlreader_string_SOURCES): $(test_xmlreader_string_VALASOURCES)
+ $(VALAC) -C --basedir $(top_srcdir) --vapidir $(top_srcdir)/geexml --pkg geexml-1.0 --pkg vala-1.0 --pkg libxml-2.0 --pkg gio-2.0 $^
+ touch $@
+test_xmlreader_string_LDADD = $(progs_ldadd)
+EXTRA_DIST += $(test_xmlreader_string_VALASOURCES)
+
EXTRA_DIST += test1.xml
EXTRA_DIST += test2.xml
diff --git a/test/test-xmlreader-string.vala b/test/test-xmlreader-string.vala
new file mode 100644
index 0000000..0ea8b56
--- /dev/null
+++ b/test/test-xmlreader-string.vala
@@ -0,0 +1,41 @@
+using GLib;
+using Gee.XmlEtree;
+
+public class BasicSample : Object {
+
+ public void run( ) {
+ var etree = new ElementTree( );
+ var xml_data = new StringBuilder ();
+
+ xml_data.append ("<?xml version=\"1.0\"?>");
+ xml_data.append ("<note><to>Harry</to><from>John</from>");
+ xml_data.append ("<heading>Reminder</heading><body>Don't forget me this weekend!</body></note>");
+
+ try {
+ etree.parse_string( xml_data.str );
+ }catch( Gee.XmlEtree.Error e ){
+ stderr.printf( "Oops: %s\n", e.message );
+ }
+
+
+ // Iterating xml elements
+ // --------------------------------
+
+ foreach( Element e in etree ) {
+ stdout.printf( "<%s>\n" , e.tag );
+ foreach( string key in e.attribs.get_keys( ) ) {
+ stdout.printf( " |-> '%s' : '%s'\n", key, e.attribs[key] ) ;
+ }
+ if ( e.tag != "note" )
+ stdout.printf( " \\-> text : '%s'\n", e.text );
+ }
+
+ }
+
+ public static int main( string[] args ) {
+ var sample = new BasicSample( );
+
+ sample.run( );
+ return 0;
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]