aboutsummaryrefslogblamecommitdiffstats
path: root/library/cpp/xml/document/README.md
blob: b2649523d8f923af6993580dbace8e15f2b9fb72 (plain) (tree)
1
2
3
4
5


                                              
                                                      








                                                                        
                             
                                    
                     

                                                  





                                                  
     




                                                                            
                                            
                                                 
                                                       
 
                                          
A wrapper around the DOM interface of libxml2.

The standard way to use it is as follows:

    #include <library/cpp/xml/document/xml-document.h>
    ...

    // open a document
    NXml::TDocument xml("filename.xml");

    // get a nodeset from an XPath query
    NXml::TConstNodes nodes = xml.Root().Nodes("xpath/expression/here");

    // iterate over the nodeset
    for (size_t i = 0; i < nodes.size(); ++i) {
        using namespace NXml;
        TConstNode& node = nodes[i];
        // query node
        TString name = node.Name();
        TString lang = node.Attr<TString>("lang");
        TString text = node.Value<TString>();
        TConstNode child = node.GetFirstChild("");
        // edit node
        TNode node = child.ConstCast();
        node.DelAttr("id");
        node.SetAttr("x", 2);
        node.SetValue(5);
        node.AddText(" apples");
    }

    // edit documents with copy-paste
    NXml::TDocument xml2("<xpath><node/></xpath>", NXml::TDocument::String);
    NXml::TNode place = xml2.Root().Node("xpath/node");
    // copy node's subtree from one document to another
    place.AddChild(xml.Root());
    // save (render) single element
    TString modifiedNode = place.ToString();
    // save whole document with optional encoding
    TString modifiedDoc  = xml2.ToString("ISO-8559-1");


See xml-document_ut.cpp for more examples.