ConfigXML.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:1k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2.  * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3.  * 
  4.  * $Id: ConfigXML.cs,v 1.2 2005/04/20 09:06:03 okajima Exp $
  5.  */
  6. using System;
  7. using System.Collections;
  8. using System.Xml;
  9. namespace Poderosa.Config {
  10. public class DOMNodeConverter {
  11. public static ConfigNode Read(XmlDocument doc) {
  12. return Read(doc.DocumentElement);
  13. }
  14. public static ConfigNode Read(XmlElement elem) {
  15. ConfigNode node = new ConfigNode(elem.LocalName);
  16. foreach(XmlAttribute attr in elem.Attributes)
  17. node[attr.LocalName] = attr.Value;
  18. foreach(XmlNode ch in elem.ChildNodes) {
  19. XmlElement ce = ch as XmlElement;
  20. if(ce!=null)
  21. node.AddChild(Read(ce));
  22. }
  23. return node;
  24. }
  25. public static XmlElement Write(XmlDocument doc, ConfigNode node) {
  26. XmlElement e = doc.CreateElement(node.Name);
  27. IDictionaryEnumerator i = node.GetPairEnumerator();
  28. while(i.MoveNext())
  29. e.SetAttribute((string)i.Key, (string)i.Value);
  30. foreach(ConfigNode ch in node.Children)
  31. e.AppendChild(Write(doc, ch));
  32. return e;
  33. }
  34. public static void Write(XmlWriter wr, ConfigNode node) {
  35. wr.WriteStartElement(node.Name);
  36. IDictionaryEnumerator i = node.GetPairEnumerator();
  37. while(i.MoveNext())
  38. wr.WriteAttributeString((string)i.Key, (string)i.Value);
  39. foreach(ConfigNode ch in node.Children)
  40. Write(wr, ch);
  41. wr.WriteEndElement();
  42. }
  43. }
  44. }