]>
git.saurik.com Git - wxWidgets.git/blob - contrib/utils/wxrcedit/xmlhelpr.cpp
c5a56f854e3da328dc18f390b8b23c69e513ddad
1 /////////////////////////////////////////////////////////////////////////////
2 // Author: Vaclav Slavik
5 // Copyright: (c) 2000 Vaclav Slavik
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
10 #pragma implementation "xmlhelpr.h"
13 // For compilers that support precompilation, includes "wx/wx.h".
14 #include "wx/wxprec.h"
20 #include "wx/xml/xml.h"
22 #include "wx/tokenzr.h"
27 wxXmlNode
*XmlFindNodeSimple(wxXmlNode
*parent
, const wxString
& param
)
29 if (param
.IsEmpty()) return parent
;
31 wxXmlNode
*n
= parent
->GetChildren();
35 if (n
->GetType() == wxXML_ELEMENT_NODE
&& n
->GetName() == param
)
44 wxXmlNode
*XmlFindNode(wxXmlNode
*parent
, const wxString
& path
)
46 wxXmlNode
*n
= parent
;
47 wxStringTokenizer
tkn(path
, _T("/"));
48 while (tkn
.HasMoreTokens())
50 n
= XmlFindNodeSimple(n
, tkn
.GetNextToken());
58 void XmlWriteValue(wxXmlNode
*parent
, const wxString
& name
, const wxString
& value
)
60 wxXmlNode
*n
= XmlFindNode(parent
, name
);
63 wxString pname
= name
.BeforeLast(_T('/'));
64 if (pname
.IsEmpty()) pname
= name
;
65 wxXmlNode
*p
= XmlFindNode(parent
, pname
);
66 if (p
== NULL
) p
= parent
;
67 n
= new wxXmlNode(wxXML_ELEMENT_NODE
, name
.AfterLast(_T('/')));
69 n
->AddChild(new wxXmlNode(wxXML_TEXT_NODE
, wxEmptyString
));
76 if (n
->GetType() == wxXML_TEXT_NODE
||
77 n
->GetType() == wxXML_CDATA_SECTION_NODE
)
88 wxString
XmlReadValue(wxXmlNode
*parent
, const wxString
& name
)
90 wxXmlNode
*n
= XmlFindNode(parent
, name
);
91 if (n
== NULL
) return wxEmptyString
;
96 if (n
->GetType() == wxXML_TEXT_NODE
||
97 n
->GetType() == wxXML_CDATA_SECTION_NODE
)
98 return n
->GetContent();
101 return wxEmptyString
;
106 wxString
XmlGetClass(wxXmlNode
*parent
)
108 return parent
->GetPropVal(_T("class"), wxEmptyString
);
113 void XmlSetClass(wxXmlNode
*parent
, const wxString
& classname
)
115 parent
->DeleteProperty(_T("class"));
116 parent
->AddProperty(_T("class"), classname
);