aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Server/Base/ServerUtils.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Server/Base/ServerUtils.cs')
-rw-r--r--OpenSim/Server/Base/ServerUtils.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs
index ae7ec0f..6c2b3ed 100644
--- a/OpenSim/Server/Base/ServerUtils.cs
+++ b/OpenSim/Server/Base/ServerUtils.cs
@@ -255,5 +255,47 @@ namespace OpenSim.Server.Base
255 parent.AppendChild(elem); 255 parent.AppendChild(elem);
256 } 256 }
257 } 257 }
258
259 public static Dictionary<string, object> ParseXmlResponse(string data)
260 {
261 Dictionary<string, object> ret = new Dictionary<string, object>();
262
263 XmlDocument doc = new XmlDocument();
264
265 doc.LoadXml(data);
266
267 XmlNodeList rootL = doc.GetElementsByTagName("ServerResponse");
268
269 if (rootL.Count != 1)
270 return ret;
271
272 XmlNode rootNode = rootL[0];
273
274 ret = ParseElement(rootNode);
275
276 return ret;
277 }
278
279 private static Dictionary<string, object> ParseElement(XmlNode element)
280 {
281 Dictionary<string, object> ret = new Dictionary<string, object>();
282
283 XmlNodeList partL = element.ChildNodes;
284
285 foreach (XmlNode part in partL)
286 {
287 XmlNode type = part.Attributes.GetNamedItem("Type");
288 if (type == null || type.Value != "List")
289 {
290 ret[part.Name] = part.InnerText;
291 }
292 else
293 {
294 ret[part.Name] = ParseElement(part);
295 }
296 }
297
298 return ret;
299 }
258 } 300 }
259} 301}