[libgeexml] Add parse_string method and test



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]