Re: [xml] moving from .Net System.Xml to libxml2
- From: Rob Richards <rrichards cdatazone org>
- To: Face <falazemi gmail com>
- Cc: xml gnome org
- Subject: Re: [xml] moving from .Net System.Xml to libxml2
- Date: Sat, 28 Aug 2010 08:05:36 -0400
On 8/27/10 7:11 PM, Face wrote:
Hello all,
I am trying to move from .Net System.Xml to libxml2 and i would like
to know how can i print the element markup representing of the current
node and all its child nodes using libxml2. coming from .Net
background i could do this by System.Xml.XmlNode.OuterXml of the
current node. I tried to read the document on xmlsoft.org however i
is very confusing to me . therefore, if anyone could help me with this
or point me to the right direction
here what i did so far:
<?xml version="1.0"?>
<story>
<storyinfo>
<author>John Fleck</author>
<datewritten>June 2, 2002</datewritten>
<keyword>example keyword</keyword>
</storyinfo>
<body>
<headline>This is the headline</headline>
<para>This is the body text.</para>
</body>
</story>
#include<stdio.h>
#include<libxml/parser.h>
#include<libxml/tree.h>
static void print_element_names(xmlNode * a_node) {
xmlNode *cur_node = NULL;
xmlAttr *cur_attr = NULL;
for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
if (cur_node->type == XML_ELEMENT_NODE) {
printf("name: %s\n", cur_node->name);
for (cur_attr = cur_node->properties; cur_attr; cur_attr = cur_attr->next) {
printf("\tattribute : %s \t%s\n", cur_attr->name,
cur_attr->children->content);
}
}
if (cur_node->type == XML_TEXT_NODE) {
printf("\tcontent: %s\n", cur_node->content);
}
print_element_names(cur_node->children);
char Staring[1]="s";
}
}
int main(int argc, char **argv) {
xmlDoc *doc = NULL;
xmlNode *root_element = NULL;
if (argc != 2) return(1);
LIBXML_TEST_VERSION // Macro to check API for match with
// the DLL we are using
/*parse the file and get the DOM */
if ((doc = xmlReadFile(argv[1], NULL, 0)) == NULL){
printf("error: could not parse file %s\n", argv[1]);
exit(-1);
}
/*Get the root element node */
root_element = xmlDocGetRootElement(doc);
print_element_names(root_element);
xmlFreeDoc(doc); // free document
xmlCleanupParser(); // Free globals
return 0;
}
./test Sample.xml
===========================================
name: story
content:
name: storyinfo
content:
name: author
content: John Fleck
content:
name: datewritten
content: June 2, 2002
content:
name: keyword
content: example keyword
content:
content:
name: body
content:
name: headline
content: This is the headline
content:
name: para
content: This is the body text.
content:
content:
===========================================
what i need to print is the element like this
<datewritten>June 2, 2002</datewritten>
Take a look at the functions xmlNodeDump and xmlNodeDumpOutput
Rob
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]