\hypertarget{group__Eina__Simple__XML__Group}{}\section{Simple\+\_\+\+X\+ML}
\label{group__Eina__Simple__XML__Group}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}


Simplistic relaxed S\+A\+X-\/like X\+ML parser.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct__Eina__Simple__XML__Attribute}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute}
\item 
struct \hyperlink{struct__Eina__Simple__XML__Node}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node}
\item 
struct \hyperlink{struct__Eina__Simple__XML__Node__Tag}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag}
\item 
struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gafd03fe1282f2096fb79dd273e565e447}\label{group__Eina__Simple__XML__Group_gafd03fe1282f2096fb79dd273e565e447}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gac0c88636c0c3ea1b3e4afea4608d408f}\label{group__Eina__Simple__XML__Group_gac0c88636c0c3ea1b3e4afea4608d408f}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Tag}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Root}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gaceffd0e20fa79cde08848ccc13506f07}\label{group__Eina__Simple__XML__Group_gaceffd0e20fa79cde08848ccc13506f07}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Tag}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga984cb5f5fdba4666460a47ef85cf6e51}\label{group__Eina__Simple__XML__Group_ga984cb5f5fdba4666460a47ef85cf6e51}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga5b84375d3adafe2cf77f939dd40333dc}\label{group__Eina__Simple__XML__Group_ga5b84375d3adafe2cf77f939dd40333dc}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+C\+Data}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga8ab2e21890f2ff8cd34bdbeb807dcb68}\label{group__Eina__Simple__XML__Group_ga8ab2e21890f2ff8cd34bdbeb807dcb68}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Processing}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga30610d2c16c3bdeb32f24eb7a4b61824}\label{group__Eina__Simple__XML__Group_ga30610d2c16c3bdeb32f24eb7a4b61824}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype}
\item 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} \hyperlink{group__Eina__Simple__XML__Group_ga05c86d915850a2446d325ba2d6cf8063}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga7b7952d9005077b3bcda658daac541eb}\label{group__Eina__Simple__XML__Group_ga7b7952d9005077b3bcda658daac541eb}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Comment}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga1e22b8b85f566c19f12ae5deaa0b373a}\label{group__Eina__Simple__XML__Group_ga1e22b8b85f566c19f12ae5deaa0b373a}} 
typedef struct \hyperlink{struct__Eina__Simple__XML__Attribute}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga4d65c6a5555009430afb9cc1b90ae471}\label{group__Eina__Simple__XML__Group_ga4d65c6a5555009430afb9cc1b90ae471}} 
typedef enum \hyperlink{group__Eina__Simple__XML__Group_gab17a1b993b2a2c9e710e41af5ead7ece}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga2eee55ac395e0590adea5b572fa55973}\label{group__Eina__Simple__XML__Group_ga2eee55ac395e0590adea5b572fa55973}} 
typedef enum \hyperlink{group__Eina__Simple__XML__Group_gad43c24562b801f797d8f7cb8b3fe2d4c}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type} {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type}
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gafe4e44d22bf8b364bfeb17584e31e942}\label{group__Eina__Simple__XML__Group_gafe4e44d22bf8b364bfeb17584e31e942}} 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Cb}) (void $\ast$data, Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type type, const char $\ast$content, unsigned offset, unsigned length)
\item 
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gaba1b51d8dae7c7bd40dcc38612552db4}\label{group__Eina__Simple__XML__Group_gaba1b51d8dae7c7bd40dcc38612552db4}} 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ {\bfseries Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute\+\_\+\+Cb}) (void $\ast$data, const char $\ast$key, const char $\ast$value)
\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{group__Eina__Simple__XML__Group_gab17a1b993b2a2c9e710e41af5ead7ece}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type} \{ \newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+R\+O\+OT} = 0, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+T\+AG}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+A\+TA}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+C\+D\+A\+TA}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+PE}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+C\+O\+M\+M\+E\+NT}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggab17a1b993b2a2c9e710e41af5ead7ecea724b49a0f1b7f055d4cb39e59fb9ccaa}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD}
 \}
\item 
enum \hyperlink{group__Eina__Simple__XML__Group_gad43c24562b801f797d8f7cb8b3fe2d4c}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type} \{ \newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca5be26ebfdfdefbc411adde618c4c2dd4}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN} = 0, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf3ec2251fc391fcf3412f410df26e991}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf6a31cfbf0a78aa5a0136830ca8898bf}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+L\+O\+SE}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caea1f4a70cdfcfba5c19ce1abe363c688}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+A\+TA}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caeb893d29b667864bcd7407dee66e91a6}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+D\+A\+TA}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca9596249e3b0d83978a95102698a03878}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+E\+R\+R\+OR}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caa61757eb16e0840e6099703c13df93a0}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4cae4e85ea4ef3826be77042d4781a1839e}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+PE}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca733afc8399521464b90ce884b8c28f4c}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+O\+M\+M\+E\+NT}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca70a83581ce5def5e56dd754e71023fb2}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED}, 
\newline
\hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca1024548d9f3597126f02c9f6be974a50}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD}
 \}\begin{DoxyCompactList}\small\item\em a simple X\+ML type. \end{DoxyCompactList}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Simple__XML__Group_gacbbb2b975f6f3e1d0a3d2215cc37da82}{eina\+\_\+simple\+\_\+xml\+\_\+parse} (const char $\ast$buf, unsigned buflen, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} strip, Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Cb func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Parse a section of X\+ML string text. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{group__Eina__Simple__XML__Group_gaa356517d0c834904432275d7edd2a892}{eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find} (const char $\ast$buf, unsigned buflen)
\begin{DoxyCompactList}\small\item\em Given the contents of a tag, find where the attributes start. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Simple__XML__Group_ga9525b33f8d78eb23def4f660b290f794}{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse} (const char $\ast$buf, unsigned buflen, Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute\+\_\+\+Cb func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Given a buffer with xml attributes, parse them to key=value pairs. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Simple__XML__Group_gac21557e70e4a0d171698929e07ad25a3}{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse} (const char $\ast$buf, Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute\+\_\+\+Cb func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Given a buffer with the xml value of an attributes, parse them to key\+:value pairs. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Attribute}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga0423710c6b5a63f96f0596ca43d2fe13}{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$key, const char $\ast$value)
\begin{DoxyCompactList}\small\item\em Create (and append) new attribute to tag. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_gaaafe18e1332223a16c59a1569553eed1}{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Attribute}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute} $\ast$attr)
\begin{DoxyCompactList}\small\item\em Remove attribute from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_gaafc15b5366df6323b0c2b45d666227ff}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$name)
\begin{DoxyCompactList}\small\item\em Create new tag. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$tag)
\begin{DoxyCompactList}\small\item\em Remove tag from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga4cbaf18751397d210af06fe926834fcf}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$contents, size\+\_\+t length)
\begin{DoxyCompactList}\small\item\em Create new data. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_ga77f49d08b327742794ed51808b32a5ef}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$node)
\begin{DoxyCompactList}\small\item\em Remove data from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+C\+Data} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga26d9042354095f18f73c68bba96451a3}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$contents, size\+\_\+t length)
\begin{DoxyCompactList}\small\item\em Create new cdata. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_ga1022092edff13037fbfb19041659c569}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$node)
\begin{DoxyCompactList}\small\item\em Remove cdata from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Simple__XML__Group_ga05c86d915850a2446d325ba2d6cf8063}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga97aeaa645f690d0984346c4cfbafb79b}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$contents, size\+\_\+t length)
\begin{DoxyCompactList}\small\item\em Create new doctype child. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_gadf9f79006304cd74f4034b0f7bf8fe29}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$node)
\begin{DoxyCompactList}\small\item\em Remove doctype child from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Processing} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_gad4456701e722807c5a98716932f5959a}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$contents, size\+\_\+t length)
\begin{DoxyCompactList}\small\item\em Create new processing. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_ga829c71d5d81a964d2707dccba7a1a35a}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$node)
\begin{DoxyCompactList}\small\item\em Remove processing from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga0d3dd88fa214c1a79c4e1928bcf92474}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$contents, size\+\_\+t length)
\begin{DoxyCompactList}\small\item\em Create new doctype. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_gae48688ad88ea2b6a48e4155073c24082}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$node)
\begin{DoxyCompactList}\small\item\em Remove doctype from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Comment} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga49cedf672a9d4c3580fa2399d664b717}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$parent, const char $\ast$contents, size\+\_\+t length)
\begin{DoxyCompactList}\small\item\em Create new comment. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_ga5069d4f73643dec2e326ead6658a7456}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$node)
\begin{DoxyCompactList}\small\item\em Remove comment from parent and delete it. \end{DoxyCompactList}\item 
\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Root} $\ast$ \hyperlink{group__Eina__Simple__XML__Group_gadc951418424b679ea32ba63492894fe3}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load} (const char $\ast$buf, unsigned buflen, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} strip)
\begin{DoxyCompactList}\small\item\em Load a X\+ML node tree based on the given string. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Simple__XML__Group_ga10bd106664ae8ca34a49fd621fee9dbc}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free} (\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Root} $\ast$root)
\begin{DoxyCompactList}\small\item\em Free node tree build with \hyperlink{group__Eina__Simple__XML__Group_gadc951418424b679ea32ba63492894fe3}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load()} \end{DoxyCompactList}\item 
char $\ast$ \hyperlink{group__Eina__Simple__XML__Group_ga212ed77de0d04140f24e69d8a1da84a7}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump} (\hyperlink{struct__Eina__Simple__XML__Node}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node} $\ast$node, const char $\ast$indent)
\begin{DoxyCompactList}\small\item\em Converts the node tree under the given element to a X\+ML string. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Simplistic relaxed S\+A\+X-\/like X\+ML parser. 

This parser is far from being compliant with X\+ML standard, but will do for most X\+M\+Ls out there. If you know that your format is simple and will not vary in future with strange corner cases, then you can use it safely.

The parser is S\+AX like, that is, it will tokenize contents and call you back so you can take some action. No contents are allocated during this parser work and it\textquotesingle{}s not recursive, so you can use it with a very large document without worries.

It will not validate the document anyhow, neither it will create a tree hierarchy. That\textquotesingle{}s up to you.

Accordingly to X\+ML, open tags may contain attributes. This parser will not tokenize this. If you want you can use \hyperlink{group__Eina__Simple__XML__Group_gaa356517d0c834904432275d7edd2a892}{eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find()} and then \hyperlink{group__Eina__Simple__XML__Group_ga9525b33f8d78eb23def4f660b290f794}{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse()}.

For more information, see \hyperlink{eina_simple_xml_parser_example_01_page}{this example}. 

\subsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga05c86d915850a2446d325ba2d6cf8063}\label{group__Eina__Simple__XML__Group_ga05c86d915850a2446d325ba2d6cf8063}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child@{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child}}
\index{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child@{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child}{Eina\_Simple\_XML\_Node\_Doctype\_Child}}
{\footnotesize\ttfamily typedef struct \hyperlink{struct__Eina__Simple__XML__Node__Data}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} \hyperlink{group__Eina__Simple__XML__Group_ga05c86d915850a2446d325ba2d6cf8063}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child}}

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


\subsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gab17a1b993b2a2c9e710e41af5ead7ece}\label{group__Eina__Simple__XML__Group_gab17a1b993b2a2c9e710e41af5ead7ece}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type@{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type}}
\index{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type@{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type}{\_Eina\_Simple\_XML\_Node\_Type}}
{\footnotesize\ttfamily enum \hyperlink{group__Eina__Simple__XML__Group_gab17a1b993b2a2c9e710e41af5ead7ece}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Type}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggab17a1b993b2a2c9e710e41af5ead7ecea724b49a0f1b7f055d4cb39e59fb9ccaa}\label{group__Eina__Simple__XML__Group_ggab17a1b993b2a2c9e710e41af5ead7ecea724b49a0f1b7f055d4cb39e59fb9ccaa}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD&\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\\
\hline

\end{DoxyEnumFields}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gad43c24562b801f797d8f7cb8b3fe2d4c}\label{group__Eina__Simple__XML__Group_gad43c24562b801f797d8f7cb8b3fe2d4c}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type@{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type}}
\index{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type@{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type}{\_Eina\_Simple\_XML\_Type}}
{\footnotesize\ttfamily enum \hyperlink{group__Eina__Simple__XML__Group_gad43c24562b801f797d8f7cb8b3fe2d4c}{\+\_\+\+Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Type}}



a simple X\+ML type. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca5be26ebfdfdefbc411adde618c4c2dd4}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca5be26ebfdfdefbc411adde618c4c2dd4}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN&$<$tag attribute=\char`\"{}value\char`\"{}$>$ \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf3ec2251fc391fcf3412f410df26e991}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf3ec2251fc391fcf3412f410df26e991}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY&$<$tag attribute=\char`\"{}value\char`\"{} /$>$ \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+L\+O\+SE@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+L\+O\+SE}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+L\+O\+SE@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+L\+O\+SE}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf6a31cfbf0a78aa5a0136830ca8898bf}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf6a31cfbf0a78aa5a0136830ca8898bf}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+L\+O\+SE&$<$/tag$>$ \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+A\+TA@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+A\+TA}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+A\+TA@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+A\+TA}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caea1f4a70cdfcfba5c19ce1abe363c688}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caea1f4a70cdfcfba5c19ce1abe363c688}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+A\+TA&tag text data \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+D\+A\+TA@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+D\+A\+TA}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+D\+A\+TA@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+D\+A\+TA}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caeb893d29b667864bcd7407dee66e91a6}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caeb893d29b667864bcd7407dee66e91a6}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+D\+A\+TA&$<$!\mbox{[}C\+D\+A\+TA\mbox{[}something\mbox{]}\mbox{]}$>$ \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+E\+R\+R\+OR@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+E\+R\+R\+OR}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+E\+R\+R\+OR@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+E\+R\+R\+OR}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca9596249e3b0d83978a95102698a03878}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca9596249e3b0d83978a95102698a03878}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+E\+R\+R\+OR&error contents \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caa61757eb16e0840e6099703c13df93a0}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caa61757eb16e0840e6099703c13df93a0}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+P\+R\+O\+C\+E\+S\+S\+I\+NG&$<$?xml ... ?$>$ $<$?php .. ?$>$ \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+PE@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+PE}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+PE@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+PE}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4cae4e85ea4ef3826be77042d4781a1839e}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4cae4e85ea4ef3826be77042d4781a1839e}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+PE&$<$!\+D\+O\+C\+T\+Y\+PE html \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+O\+M\+M\+E\+NT@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+O\+M\+M\+E\+NT}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+O\+M\+M\+E\+NT@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+O\+M\+M\+E\+NT}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca733afc8399521464b90ce884b8c28f4c}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca733afc8399521464b90ce884b8c28f4c}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+C\+O\+M\+M\+E\+NT&$<$!-- something --$>$ \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca70a83581ce5def5e56dd754e71023fb2}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca70a83581ce5def5e56dd754e71023fb2}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED&whatever is ignored by parser, like whitespace \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD@{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD}}}\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca1024548d9f3597126f02c9f6be974a50}\label{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca1024548d9f3597126f02c9f6be974a50}} 
E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD&$<$!\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD \begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\\
\hline

\end{DoxyEnumFields}


\subsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gacbbb2b975f6f3e1d0a3d2215cc37da82}\label{group__Eina__Simple__XML__Group_gacbbb2b975f6f3e1d0a3d2215cc37da82}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+parse@{eina\+\_\+simple\+\_\+xml\+\_\+parse}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+parse@{eina\+\_\+simple\+\_\+xml\+\_\+parse}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+parse()}{eina\_simple\_xml\_parse()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} eina\+\_\+simple\+\_\+xml\+\_\+parse (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{unsigned}]{buflen,  }\item[{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}]{strip,  }\item[{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Cb}]{func,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Parse a section of X\+ML string text. 


\begin{DoxyParams}{Parameters}
{\em buf} & the input string. May not contain \textbackslash{}0 terminator. \\
\hline
{\em buflen} & the input string size. \\
\hline
{\em strip} & whenever this parser should strip leading and trailing whitespace. These whitespace will still be issued, but as type \hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca70a83581ce5def5e56dd754e71023fb2}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+I\+G\+N\+O\+R\+ED}. \\
\hline
{\em func} & what to call back while parse to do some action. The first parameter is the given user {\itshape data}, the second is the token type, the third is the pointer to content start (it\textquotesingle{}s not a N\+U\+LL terminated string!), the forth is where this content is located inside {\itshape buf} (does not include tag start, for instance \char`\"{}$<$!\+D\+O\+C\+T\+Y\+P\+E value$>$\char`\"{} the offset points at \char`\"{}value\char`\"{}), the fifth is the size of the content. Whenever this function return \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} the parser will abort. \\
\hline
{\em data} & what to give as context to {\itshape func}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success or \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} if it was aborted by user or parsing error. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gaa356517d0c834904432275d7edd2a892}\label{group__Eina__Simple__XML__Group_gaa356517d0c834904432275d7edd2a892}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find@{eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find@{eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find()}{eina\_simple\_xml\_tag\_attributes\_find()}}
{\footnotesize\ttfamily const char$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+tag\+\_\+attributes\+\_\+find (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{unsigned}]{buflen }\end{DoxyParamCaption})}



Given the contents of a tag, find where the attributes start. 


\begin{DoxyParams}{Parameters}
{\em buf} & the input string. May not contain \textbackslash{}0 terminator. \\
\hline
{\em buflen} & the input string size. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to the start of attributes, it can be used to feed \hyperlink{group__Eina__Simple__XML__Group_ga9525b33f8d78eb23def4f660b290f794}{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse()}. {\ttfamily N\+U\+LL} is returned if no attributes were found.
\end{DoxyReturn}
The tag contents is returned by \hyperlink{group__Eina__Simple__XML__Group_gacbbb2b975f6f3e1d0a3d2215cc37da82}{eina\+\_\+simple\+\_\+xml\+\_\+parse()} when type is \hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4ca5be26ebfdfdefbc411adde618c4c2dd4}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+EN} or \hyperlink{group__Eina__Simple__XML__Group_ggad43c24562b801f797d8f7cb8b3fe2d4caf3ec2251fc391fcf3412f410df26e991}{E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+O\+P\+E\+N\+\_\+\+E\+M\+P\+TY}. \mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga9525b33f8d78eb23def4f660b290f794}\label{group__Eina__Simple__XML__Group_ga9525b33f8d78eb23def4f660b290f794}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse@{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse@{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse()}{eina\_simple\_xml\_attributes\_parse()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} eina\+\_\+simple\+\_\+xml\+\_\+attributes\+\_\+parse (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{unsigned}]{buflen,  }\item[{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute\+\_\+\+Cb}]{func,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Given a buffer with xml attributes, parse them to key=value pairs. 


\begin{DoxyParams}{Parameters}
{\em buf} & the input string. May not contain \textbackslash{}0 terminator. \\
\hline
{\em buflen} & the input string size. \\
\hline
{\em func} & what to call back while parse to do some action. The first parameter is the given user {\itshape data}, the second is the key (null-\/terminated) and the last is the value (null terminated). These strings should not be modified and reference is just valid until the function return. \\
\hline
{\em data} & data to pass to the callback function.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success or \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} if it was aborted by user or parsing error. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gac21557e70e4a0d171698929e07ad25a3}\label{group__Eina__Simple__XML__Group_gac21557e70e4a0d171698929e07ad25a3}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse@{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse@{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse()}{eina\_simple\_xml\_attribute\_w3c\_parse()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+w3c\+\_\+parse (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute\+\_\+\+Cb}]{func,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Given a buffer with the xml value of an attributes, parse them to key\+:value pairs. 


\begin{DoxyParams}{Parameters}
{\em buf} & the input string. Need to contain \textbackslash{}0 terminator. \\
\hline
{\em func} & what to call back while parse to do some action. The first parameter is the given user {\itshape data}, the second is the key (null-\/terminated) and the last is the value (null terminated). These strings should not be modified and reference is just valid until the function return. \\
\hline
{\em data} & data to pass to the callback function.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success or \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} if it was aborted by user or parsing error.
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+14 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga0423710c6b5a63f96f0596ca43d2fe13}\label{group__Eina__Simple__XML__Group_ga0423710c6b5a63f96f0596ca43d2fe13}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new()}{eina\_simple\_xml\_attribute\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Attribute}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{key,  }\item[{const char $\ast$}]{value }\end{DoxyParamCaption})}



Create (and append) new attribute to tag. 


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the attribute will be appended to attributes list. \\
\hline
{\em key} & Null-\/terminated string. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em value} & Null-\/terminated string. If {\ttfamily N\+U\+LL}, the empty string will be used.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_gaaafe18e1332223a16c59a1569553eed1}{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()}. 
\end{DoxyReturn}


References eina\+\_\+inlist\+\_\+append(), E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+ET, E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, eina\+\_\+mempool\+\_\+malloc(), eina\+\_\+stringshare\+\_\+add(), E\+RR, and efl\+::eo\+::parent.

\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gaaafe18e1332223a16c59a1569553eed1}\label{group__Eina__Simple__XML__Group_gaaafe18e1332223a16c59a1569553eed1}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free()}{eina\_simple\_xml\_attribute\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+attribute\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Attribute}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Attribute} $\ast$}]{attr }\end{DoxyParamCaption})}



Remove attribute from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em attr} & attribute to release memory. \\
\hline
\end{DoxyParams}


References E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+ET, eina\+\_\+inlist\+\_\+remove(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+N\+O\+NE, E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, eina\+\_\+mempool\+\_\+free(), and eina\+\_\+stringshare\+\_\+del().

\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gaafc15b5366df6323b0c2b45d666227ff}\label{group__Eina__Simple__XML__Group_gaafc15b5366df6323b0c2b45d666227ff}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new()}{eina\_simple\_xml\_node\_tag\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



Create new tag. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the tag will be appended to children list. \\
\hline
{\em name} & Null-\/terminated string. Must not be {\ttfamily N\+U\+LL}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, eina\+\_\+mempool\+\_\+malloc(), and E\+RR.

\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}\label{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()}{eina\_simple\_xml\_node\_tag\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{tag }\end{DoxyParamCaption})}



Remove tag from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em tag} & to release memory. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga4cbaf18751397d210af06fe926834fcf}\label{group__Eina__Simple__XML__Group_ga4cbaf18751397d210af06fe926834fcf}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new()}{eina\_simple\_xml\_node\_data\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{contents,  }\item[{size\+\_\+t}]{length }\end{DoxyParamCaption})}



Create new data. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the data will be appended to children list. \\
\hline
{\em contents} & String to be used. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em length} & size in bytes of {\itshape contents}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or N\+U\+LL on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_ga77f49d08b327742794ed51808b32a5ef}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga77f49d08b327742794ed51808b32a5ef}\label{group__Eina__Simple__XML__Group_ga77f49d08b327742794ed51808b32a5ef}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free()}{eina\_simple\_xml\_node\_data\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+data\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$}]{node }\end{DoxyParamCaption})}



Remove data from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em node} & to release memory. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga26d9042354095f18f73c68bba96451a3}\label{group__Eina__Simple__XML__Group_ga26d9042354095f18f73c68bba96451a3}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new()}{eina\_simple\_xml\_node\_cdata\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+C\+Data}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{contents,  }\item[{size\+\_\+t}]{length }\end{DoxyParamCaption})}



Create new cdata. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the cdata will be appended to children list. \\
\hline
{\em contents} & String to be used. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em length} & size in bytes of {\itshape content}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_ga1022092edff13037fbfb19041659c569}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga1022092edff13037fbfb19041659c569}\label{group__Eina__Simple__XML__Group_ga1022092edff13037fbfb19041659c569}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free()}{eina\_simple\_xml\_node\_cdata\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+cdata\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$}]{node }\end{DoxyParamCaption})}



Remove cdata from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em node} & to release memory. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga97aeaa645f690d0984346c4cfbafb79b}\label{group__Eina__Simple__XML__Group_ga97aeaa645f690d0984346c4cfbafb79b}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new()}{eina\_simple\_xml\_node\_doctype\_child\_new()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Simple__XML__Group_ga05c86d915850a2446d325ba2d6cf8063}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype\+\_\+\+Child}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{contents,  }\item[{size\+\_\+t}]{length }\end{DoxyParamCaption})}



Create new doctype child. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the doctype child will be appended to children list. \\
\hline
{\em contents} & String to be used. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em length} & size in bytes of {\itshape content}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_gadf9f79006304cd74f4034b0f7bf8fe29}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent.
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD.

\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gadf9f79006304cd74f4034b0f7bf8fe29}\label{group__Eina__Simple__XML__Group_gadf9f79006304cd74f4034b0f7bf8fe29}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free()}{eina\_simple\_xml\_node\_doctype\_child\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+child\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$}]{node }\end{DoxyParamCaption})}



Remove doctype child from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em node} & to release memory.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+S\+I\+M\+P\+L\+E\+\_\+\+X\+M\+L\+\_\+\+N\+O\+D\+E\+\_\+\+D\+O\+C\+T\+Y\+P\+E\+\_\+\+C\+H\+I\+LD, and E\+RR.

\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gad4456701e722807c5a98716932f5959a}\label{group__Eina__Simple__XML__Group_gad4456701e722807c5a98716932f5959a}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new()}{eina\_simple\_xml\_node\_processing\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Processing}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{contents,  }\item[{size\+\_\+t}]{length }\end{DoxyParamCaption})}



Create new processing. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the processing will be appended to children list. \\
\hline
{\em contents} & String to be used. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em length} & size in bytes of {\itshape contents}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_ga829c71d5d81a964d2707dccba7a1a35a}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga829c71d5d81a964d2707dccba7a1a35a}\label{group__Eina__Simple__XML__Group_ga829c71d5d81a964d2707dccba7a1a35a}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free()}{eina\_simple\_xml\_node\_processing\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+processing\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$}]{node }\end{DoxyParamCaption})}



Remove processing from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em node} & processing to release memory. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga0d3dd88fa214c1a79c4e1928bcf92474}\label{group__Eina__Simple__XML__Group_ga0d3dd88fa214c1a79c4e1928bcf92474}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new()}{eina\_simple\_xml\_node\_doctype\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Doctype}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{contents,  }\item[{size\+\_\+t}]{length }\end{DoxyParamCaption})}



Create new doctype. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the doctype will be appended to children list. \\
\hline
{\em contents} & String to be used. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em length} & size in bytes of {\itshape contents}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_gae48688ad88ea2b6a48e4155073c24082}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gae48688ad88ea2b6a48e4155073c24082}\label{group__Eina__Simple__XML__Group_gae48688ad88ea2b6a48e4155073c24082}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free()}{eina\_simple\_xml\_node\_doctype\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+doctype\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$}]{node }\end{DoxyParamCaption})}



Remove doctype from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em node} & doctype to release memory. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga49cedf672a9d4c3580fa2399d664b717}\label{group__Eina__Simple__XML__Group_ga49cedf672a9d4c3580fa2399d664b717}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new()}{eina\_simple\_xml\_node\_comment\_new()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Comment}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+new (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Tag} $\ast$}]{parent,  }\item[{const char $\ast$}]{contents,  }\item[{size\+\_\+t}]{length }\end{DoxyParamCaption})}



Create new comment. 

If parent is provided, it is automatically appended.


\begin{DoxyParams}{Parameters}
{\em parent} & if provided, will be set in the resulting structure as well as the comment will be appended to children list. \\
\hline
{\em contents} & String to be used. Must not be {\ttfamily N\+U\+LL}. \\
\hline
{\em length} & size in bytes of {\itshape contents}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated memory or {\ttfamily N\+U\+LL} on error. This memory should be released with \hyperlink{group__Eina__Simple__XML__Group_ga5069d4f73643dec2e326ead6658a7456}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free()} or indirectly with \hyperlink{group__Eina__Simple__XML__Group_ga6003d52b4332f185c54330ea2ad1f015}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+tag\+\_\+free()} of the parent. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga5069d4f73643dec2e326ead6658a7456}\label{group__Eina__Simple__XML__Group_ga5069d4f73643dec2e326ead6658a7456}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free()}{eina\_simple\_xml\_node\_comment\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+comment\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Data}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Data} $\ast$}]{node }\end{DoxyParamCaption})}



Remove comment from parent and delete it. 


\begin{DoxyParams}{Parameters}
{\em node} & comment to release memory. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_gadc951418424b679ea32ba63492894fe3}\label{group__Eina__Simple__XML__Group_gadc951418424b679ea32ba63492894fe3}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load()}{eina\_simple\_xml\_node\_load()}}
{\footnotesize\ttfamily \hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Root}$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load (\begin{DoxyParamCaption}\item[{const char $\ast$}]{buf,  }\item[{unsigned}]{buflen,  }\item[{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}]{strip }\end{DoxyParamCaption})}



Load a X\+ML node tree based on the given string. 


\begin{DoxyParams}{Parameters}
{\em buf} & the input string. May not contain \textbackslash{}0 terminator. \\
\hline
{\em buflen} & the input string size. \\
\hline
{\em strip} & whenever this parser should strip leading and trailing whitespace.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Document root with children tags, or {\ttfamily N\+U\+LL} on errors. Document with errors may return partial tree instead of {\ttfamily N\+U\+LL}, we\textquotesingle{}ll do our best to avoid returning nothing. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, and eina\+\_\+mempool\+\_\+malloc().

\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga10bd106664ae8ca34a49fd621fee9dbc}\label{group__Eina__Simple__XML__Group_ga10bd106664ae8ca34a49fd621fee9dbc}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free()}{eina\_simple\_xml\_node\_root\_free()}}
{\footnotesize\ttfamily void eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+root\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node__Tag}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node\+\_\+\+Root} $\ast$}]{root }\end{DoxyParamCaption})}



Free node tree build with \hyperlink{group__Eina__Simple__XML__Group_gadc951418424b679ea32ba63492894fe3}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load()} 


\begin{DoxyParams}{Parameters}
{\em root} & memory returned by \hyperlink{group__Eina__Simple__XML__Group_gadc951418424b679ea32ba63492894fe3}{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+load()} \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Simple__XML__Group_ga212ed77de0d04140f24e69d8a1da84a7}\label{group__Eina__Simple__XML__Group_ga212ed77de0d04140f24e69d8a1da84a7}} 
\index{Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}!eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump}}
\index{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump@{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump}!Simple\+\_\+\+X\+ML@{Simple\+\_\+\+X\+ML}}
\subsubsection{\texorpdfstring{eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump()}{eina\_simple\_xml\_node\_dump()}}
{\footnotesize\ttfamily char$\ast$ eina\+\_\+simple\+\_\+xml\+\_\+node\+\_\+dump (\begin{DoxyParamCaption}\item[{\hyperlink{struct__Eina__Simple__XML__Node}{Eina\+\_\+\+Simple\+\_\+\+X\+M\+L\+\_\+\+Node} $\ast$}]{node,  }\item[{const char $\ast$}]{indent }\end{DoxyParamCaption})}



Converts the node tree under the given element to a X\+ML string. 


\begin{DoxyParams}{Parameters}
{\em node} & the base node to convert. \\
\hline
{\em indent} & Indentation string, or {\ttfamily N\+U\+LL} to disable it.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily N\+U\+LL} on errors or a newly allocated string on success. 
\end{DoxyReturn}


References eina\+\_\+strbuf\+\_\+free(), eina\+\_\+strbuf\+\_\+new(), and eina\+\_\+strbuf\+\_\+string\+\_\+steal().

