git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27745 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			140 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Author:      Vaclav Slavik
 | 
						|
// Created:     2000/05/05
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Copyright:   (c) 2000 Vaclav Slavik
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifdef __GNUG__
 | 
						|
    #pragma implementation "xmlhelpr.h"
 | 
						|
#endif
 | 
						|
 | 
						|
// For compilers that support precompilation, includes "wx/wx.h".
 | 
						|
#include "wx/wxprec.h"
 | 
						|
 | 
						|
#ifdef __BORLANDC__
 | 
						|
    #pragma hdrstop
 | 
						|
#endif
 | 
						|
 | 
						|
#include "wx/xml/xml.h"
 | 
						|
#include "wx/wx.h"
 | 
						|
#include "wx/tokenzr.h"
 | 
						|
#include "xmlhelpr.h"
 | 
						|
 | 
						|
 | 
						|
 | 
						|
wxXmlNode *XmlFindNodeSimple(wxXmlNode *parent, const wxString& param)
 | 
						|
{
 | 
						|
    if (param.IsEmpty()) return parent;
 | 
						|
 | 
						|
    wxXmlNode *n = parent->GetChildren();
 | 
						|
 | 
						|
    while (n)
 | 
						|
    {
 | 
						|
        if (n->GetType() == wxXML_ELEMENT_NODE && n->GetName() == param)
 | 
						|
            return n;
 | 
						|
        n = n->GetNext();
 | 
						|
    }
 | 
						|
    return NULL;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
wxXmlNode *XmlFindNode(wxXmlNode *parent, const wxString& path)
 | 
						|
{
 | 
						|
    wxXmlNode *n = parent;
 | 
						|
    wxStringTokenizer tkn(path, _T("/"));
 | 
						|
    while (tkn.HasMoreTokens())
 | 
						|
    {
 | 
						|
        n = XmlFindNodeSimple(n, tkn.GetNextToken());
 | 
						|
        if (n == NULL) break;
 | 
						|
    }
 | 
						|
    return n;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
wxXmlNode *XmlCreateNode(wxXmlNode *parent, const wxString& name)
 | 
						|
{
 | 
						|
    wxXmlNode *n;
 | 
						|
    wxString nm;
 | 
						|
 | 
						|
    wxStringTokenizer tkn(name, _T("/"));
 | 
						|
    n = parent;
 | 
						|
    while (tkn.HasMoreTokens())
 | 
						|
    {
 | 
						|
        parent = n;
 | 
						|
        nm = tkn.GetNextToken();
 | 
						|
        n = XmlFindNodeSimple(parent, nm);
 | 
						|
        if (n) continue;
 | 
						|
 | 
						|
        // n == NULL:
 | 
						|
        n = new wxXmlNode(wxXML_ELEMENT_NODE, nm);
 | 
						|
        parent->AddChild(n);
 | 
						|
    }
 | 
						|
    n->AddChild(new wxXmlNode(wxXML_TEXT_NODE, wxEmptyString));
 | 
						|
 | 
						|
    return n;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
void XmlWriteValue(wxXmlNode *parent, const wxString& name, const wxString& value)
 | 
						|
{
 | 
						|
    wxXmlNode *n = XmlFindNode(parent, name);
 | 
						|
    if (n == NULL)
 | 
						|
        n = XmlCreateNode(parent, name);
 | 
						|
 | 
						|
    n = n->GetChildren();
 | 
						|
 | 
						|
    while (n)
 | 
						|
    {
 | 
						|
        if (n->GetType() == wxXML_TEXT_NODE ||
 | 
						|
            n->GetType() == wxXML_CDATA_SECTION_NODE)
 | 
						|
        {
 | 
						|
            n->SetContent(value);
 | 
						|
            break;
 | 
						|
        }
 | 
						|
        n = n->GetNext();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
wxString XmlReadValue(wxXmlNode *parent, const wxString& name)
 | 
						|
{
 | 
						|
    wxXmlNode *n = XmlFindNode(parent, name);
 | 
						|
    if (n == NULL) return wxEmptyString;
 | 
						|
    n = n->GetChildren();
 | 
						|
 | 
						|
    while (n)
 | 
						|
    {
 | 
						|
        if (n->GetType() == wxXML_TEXT_NODE ||
 | 
						|
            n->GetType() == wxXML_CDATA_SECTION_NODE)
 | 
						|
            return n->GetContent();
 | 
						|
        n = n->GetNext();
 | 
						|
    }
 | 
						|
    return wxEmptyString;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
wxString XmlGetClass(wxXmlNode *parent)
 | 
						|
{
 | 
						|
    return parent->GetPropVal(_T("class"), wxEmptyString);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
void XmlSetClass(wxXmlNode *parent, const wxString& classname)
 | 
						|
{
 | 
						|
    parent->DeleteProperty(_T("class"));
 | 
						|
    parent->AddProperty(_T("class"), classname);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |