00001 using System;
00002 using System.Collections.Generic;
00003 using System.Linq;
00004 using System.Text;
00005 using System.Xml;
00006
00007 namespace Siki.Configure {
00008
00012 public class ConfigureNode {
00013
00017 public XmlElement Element {
00018 get;
00019 private set;
00020 }
00021
00026 private XmlText Text {
00027 get {
00028 foreach (XmlNode node in Element.ChildNodes) {
00029 if (node is XmlText) {
00030 return node as XmlText;
00031 }
00032 }
00033 return null;
00034 }
00035 }
00036
00044 public ConfigureNode this[string name] {
00045 get {
00046 foreach (XmlNode node in Element.ChildNodes) {
00047 if(node.Name == name && node is XmlElement){
00048
00049 return new ConfigureNode(node as XmlElement);
00050 }
00051 }
00052
00053 XmlDocument xmldoc = Element.OwnerDocument;
00054
00055 XmlElement element = xmldoc.CreateElement(name);
00056
00057 Element.AppendChild(element);
00058
00059 return new ConfigureNode(element);
00060
00061 }
00062 }
00063
00067 public string Name {
00068 get {
00069 return Element.Name;
00070 }
00071 }
00072
00076 public string Value {
00077 get {
00078 XmlText text = Text;
00079 return text != null ? text.Value : "";
00080 }
00081 set {
00082 XmlDocument doc = Element.OwnerDocument;
00083 XmlText text = Text;
00084
00085 if (text != null) {
00086 text.Value = value;
00087 } else {
00088 text = doc.CreateTextNode(value);
00089 Element.AppendChild(text);
00090 }
00091 }
00092 }
00093
00094
00099 public ConfigureNode(XmlElement element) {
00100 Element = element;
00101 }
00102
00108 public static implicit operator string(ConfigureNode node) {
00109 return node.Value;
00110 }
00111
00116 public bool HasValue() {
00117 return Text != null;
00118 }
00119 }
00120 }