Re: Compiler Errors



xmlpp::Document::write_to_file() or xmlpp::Document::write_to_file_formatted(). Don't expect too much from write_to_file_formatted(). It won't format exactly as you would like. If you've created the xmlpp::Document with xmlpp::DomParser, you must first use xmlpp::DomParser::get_document(). This will write the whole document, not just the added nodes. I don't think there's an easy way to write just some selected nodes.

Have you read the documentation? Look e.g. at http://developer.gnome.org/libxml++/stable/.

Kjell

2012-06-01 20:18, Santhosh Edukulla skrev:
Thanks. How do we save the nodes written using add_child() and
add_child_text() etc to disk?

Some thing like save xml.

Santhosh

On 6/1/12, Kjell Ahlstedt<kjell ahlstedt bredband net>  wrote:
When I run your example, it crashes on
          txt_node = node_element->get_child_text();
because node_element == NULL.

mRNode has 5 children:
1. a TextNode containing a linefeed ("\n")
2. an f1 Element node
3. a TextNode containing a linefeed
4. an f2 Element node
5. a TextNode containing a linefeed

If you are only interested in f1 nodes, change
      Node::NodeList temp_lst = mRNode->get_children();
to
      Node::NodeList temp_lst = mRNode->get_children("f1");
or make more tests when you loop over all the children.

Kjell

2012-06-01 12:44, Santhosh Edukulla skrev:
Team,

1/ I have a file with few nodes as below. Iam using the code mentioned
below to parse this file. Everytime, i run with hundreds of changes
but in vain the result is same i.e., it gets crashed. May i know as
what iam doing wrong? I have given up after 3 hours of spending time
on this. Also, documentation wise and help wise, it need some
improvement i believe. I wanted to retrieve content of a given node.
This is very easy with other dom parsers compared to here.

It crashes at the below statement.
      mConfigFilePath = txt_node->get_content();


Some how

<f>
<f1>abc</f1>
<f2>abc</f2>
</f>



string temp_str,temp_name;
   Element* node_element;
   TextNode *txt_node,*txt_node1;
   DomParser parser( "abc.xml",false );
   if( parser )
     {
                           cout<<   "SUCCESS : FILE PARSING IS
SUCCESSFUL: "<<   endl ;
                           mRNode =
parser.get_document()->get_root_node();
       }
        /*Check if op file is able to be parsed*/
         if( mRNode != NULL )

		 	 Node::NodeList temp_lst = mRNode->get_children();
                      for( Node::NodeList::iterator temp_node =
temp_lst.begin(); temp_node != temp_lst.end(); ++temp_node )
                      {
                          temp_str = (*temp_node)->get_name();
                          node_element =
dynamic_cast<Element*>(*temp_node);
                          txt_node = node_element->get_child_text();

                          if (  temp_str == "config_file" )
                          {
                                  mConfigFilePath =
txt_node->get_content();
                          }

2/ Also, I believe, it was made way too complicated i believe. I have
a node f1, i just wanted to retrieve its content. Instead we made a
TextNode,Element Node etc.
This is typically different from other parsers available under c#.net and
java.

Santhosh






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]