2 // System.Xml.XmlDocumentFragment
\r
5 // Duncan Mak (duncan@ximian.com)
\r
6 // Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
\r
9 // (C)2002 Atsushi Enomoto
\r
14 namespace System.Xml
\r
16 public class XmlDocumentFragment : XmlNode
\r
20 private XmlLinkedNode lastLinkedChild;
\r
26 protected internal XmlDocumentFragment (XmlDocument doc)
\r
34 [MonoTODO("Setter is as incomplete as that of XmlElement.InnerXml")]
\r
35 public override string InnerXml {
\r
37 // Copied from XmlElement.InnerXml (in the meantime;-))
\r
38 foreach(XmlNode n in ChildNodes)
\r
40 this.RemoveChild (n);
\r
43 // I hope there are any well-performance logic...
\r
44 XmlNameTable nt = this.OwnerDocument.NameTable;
\r
45 XmlNamespaceManager nsmgr = this.ConstructNamespaceManager ();
\r
46 XmlParserContext ctx = new XmlParserContext (nt, nsmgr, XmlLang, this.XmlSpace);
\r
47 XmlTextReader xmlReader = OwnerDocument.ReusableReader;
\r
48 xmlReader.SetReaderContext (String.Empty, ctx);
\r
49 xmlReader.SetReaderFragment (new StringReader (value), XmlNodeType.Element);
\r
50 this.ConstructDOM (xmlReader, this);
\r
53 StringBuilder sb = new StringBuilder ();
\r
54 foreach(XmlNode n in ChildNodes)
\r
55 sb.Append (n.OuterXml);
\r
56 return sb.ToString ();
\r
60 public override string LocalName {
\r
61 get { return "#document-fragment"; }
\r
65 public override string Name {
\r
66 get { return "#document-fragment"; }
\r
69 public override XmlNodeType NodeType {
\r
70 get { return XmlNodeType.DocumentFragment; }
\r
73 public override XmlDocument OwnerDocument {
\r
74 get { return base.OwnerDocument; }
\r
77 public override XmlNode ParentNode {
\r
78 get { return null; } // it's always null here.
\r
81 // It is really not a type of XmlLinkedNode,
\r
82 // but I copied this way from XmlElement. I looks good.
\r
83 internal override XmlLinkedNode LastLinkedChild
\r
85 get { return lastLinkedChild; }
\r
86 set { lastLinkedChild = value; }
\r
91 public override XmlNode CloneNode (bool deep)
\r
93 if (deep) { // clone document + child nodes
\r
94 XmlNode node = FirstChild;
\r
96 while ((node != null) && (node.HasChildNodes)) {
\r
97 AppendChild (node.NextSibling.CloneNode (false));
\r
98 node = node.NextSibling;
\r
103 return new XmlDocumentFragment (OwnerDocument);
\r
106 public override void WriteContentTo (XmlWriter w)
\r
108 foreach(XmlNode n in ChildNodes)
\r
109 n.WriteContentTo (w);
\r
112 public override void WriteTo (XmlWriter w)
\r
114 foreach(XmlNode n in ChildNodes)
\r