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
13 using System.Xml.XPath;
\r
15 namespace System.Xml
\r
17 public class XmlDocumentFragment : XmlNode
\r
22 protected internal XmlDocumentFragment (XmlDocument doc)
\r
31 public override string InnerXml {
\r
33 // Copied from XmlElement.InnerXml (in the meantime;-))
\r
34 foreach(XmlNode n in ChildNodes)
\r
36 this.RemoveChild (n);
\r
39 // I hope there are any well-performance logic...
\r
40 XmlNamespaceManager nsmgr = this.ConstructNamespaceManager ();
\r
41 XmlParserContext ctx = new XmlParserContext (OwnerDocument.NameTable, nsmgr,
42 OwnerDocument.DocumentType != null ? OwnerDocument.DocumentType.DTD : null,
43 BaseURI, XmlLang, XmlSpace, null);
44 XmlTextReader xmlReader = new XmlTextReader (value, XmlNodeType.Element, ctx);
\r
45 xmlReader.XmlResolver = OwnerDocument.Resolver;
\r
48 XmlNode n = OwnerDocument.ReadNode (xmlReader);
\r
49 if(n == null) break;
\r
54 StringBuilder sb = new StringBuilder ();
\r
55 foreach(XmlNode n in ChildNodes)
\r
56 sb.Append (n.OuterXml);
\r
57 return sb.ToString ();
\r
61 public override string LocalName {
\r
62 get { return "#document-fragment"; }
\r
66 public override string Name {
\r
67 get { return "#document-fragment"; }
\r
70 public override XmlNodeType NodeType {
\r
71 get { return XmlNodeType.DocumentFragment; }
\r
74 public override XmlDocument OwnerDocument {
\r
75 get { return base.OwnerDocument; }
\r
78 public override XmlNode ParentNode {
\r
79 get { return null; } // it's always null here.
\r
82 internal override XPathNodeType XPathNodeType
\r
84 get { return XPathNodeType.Root; }
\r
89 public override XmlNode CloneNode (bool deep)
\r
91 if (deep) { // clone document + child nodes
\r
92 XmlNode node = FirstChild;
\r
94 while ((node != null) && (node.HasChildNodes)) {
\r
95 AppendChild (node.NextSibling.CloneNode (false));
\r
96 node = node.NextSibling;
\r
101 return new XmlDocumentFragment (OwnerDocument);
\r
104 public override void WriteContentTo (XmlWriter w)
\r
106 foreach(XmlNode n in ChildNodes)
\r
107 n.WriteContentTo (w);
\r
110 public override void WriteTo (XmlWriter w)
\r
112 foreach(XmlNode n in ChildNodes)
\r