FrameworkFork\Microsoft.Xml\Xml\Dom\DocumentXmlWriter.cs (26)
61private XmlNode _start; // context node
65private XmlNode _write; // current node
66private List<XmlNode> _fragment; // top level node cache
69private XmlNode _end; // context for replace
71public DocumentXmlWriter(DocumentXmlWriterType type, XmlNode start, XmlDocument document)
78_fragment = new List<XmlNode>();
116public XmlNode EndNode
129XmlNode node = _document.CreateXmlDeclaration("1.0", string.Empty, standalone == XmlStandalone.Yes ? "yes" : "no");
139XmlNode node = _document.CreateXmlDeclaration(version, encoding, standalone);
161XmlNode node = _document.CreateDocumentType(name, pubid, sysid, subset);
168XmlNode node = _document.CreateElement(prefix, localName, ns);
228XmlNode node = _document.CreateTextNode(string.Empty);
275XmlNode node = _document.CreateTextNode(string.Empty);
285XmlNode node = _document.CreateCDataSection(text);
293XmlNode node = _document.CreateComment(text);
301XmlNode node = _document.CreateProcessingInstruction(name, text);
308XmlNode node = _document.CreateEntityReference(name);
324XmlNode node = _document.CreateWhitespace(text);
333XmlNode node = _document.CreateTextNode(text);
373XmlNode parent = _start.ParentNode;
450XmlNode parent = _start.ParentNode;
467XmlNode fragment0 = _fragment[0];
496private void AddAttribute(XmlAttribute attr, XmlNode parent)
513private void AddChild(XmlNode node, XmlNode parent)
533XmlNode parent = _start.ParentNode;
FrameworkFork\Microsoft.Xml\Xml\Dom\DocumentXPathNavigator.cs (117)
20private XmlNode _source; // navigator position
24public DocumentXPathNavigator(XmlDocument document, XmlNode node)
50XmlNode node = _source;
51XmlNode end;
211XmlNode nextSibling = NextSibling(_source);
374XmlNode node = _source;
718XmlNode sibling = NextSibling(_source);
734XmlNode parent = ParentNode(sibling);
750XmlNode sibling = PreviousSibling(_source);
770XmlNode parent = ParentNode(sibling);
793XmlNode parent = ParentNode(_source);
798XmlNode sibling = FirstChild(parent);
814XmlNode child;
849XmlNode parent = ParentNode(_source);
873XmlNode parent = _source.ParentNode;
925XmlNode child = FirstChild(_source);
951XmlNode child = FirstChild(_source);
975XmlNode pastFollowing = null;
996XmlNode following = _source;
1007XmlNode firstChild = following.FirstChild;
1016XmlNode nextSibling = following.NextSibling;
1024XmlNode parent = following.ParentNode;
1051XmlNode pastFollowing = null;
1077XmlNode following = _source;
1096XmlNode firstChild = following.FirstChild;
1105XmlNode nextSibling = following.NextSibling;
1113XmlNode parent = following.ParentNode;
1138XmlNode sibling = NextSibling(_source);
1160XmlNode sibling = NextSibling(_source);
1197XmlNode child;
1293private static XmlNode OwnerNode(XmlNode node)
1295XmlNode parent = node.ParentNode;
1308private static int GetDepth(XmlNode node)
1311XmlNode owner = OwnerNode(node);
1322private XmlNodeOrder Compare(XmlNode node1, XmlNode node2)
1363XmlNode nextNode = node1.NextSibling;
1397XmlNode node1 = _source;
1398XmlNode node2 = that._source;
1400XmlNode parent1 = OwnerNode(node1);
1401XmlNode parent2 = OwnerNode(node2);
1463XmlNode IHasXmlNode.GetNode() { return _source; }
1551XmlNode node = _source;
1628XmlNode node = _source;
1629XmlNode end = that._source;
1686XmlNode node = _source;
1687XmlNode end = that._source;
1699XmlNode parent = OwnerNode(attribute);
1736XmlNode parent = OwnerNode(node);
1747XmlNode node = _source;
1748XmlNode end = node;
1758XmlNode parent = OwnerNode(attribute);
1805internal static void DeleteToFollowingSibling(XmlNode node, XmlNode end)
1807XmlNode parent = node.ParentNode;
1820XmlNode temp = node;
1827private static XmlNamespaceManager GetNamespaceManager(XmlNode node, XmlDocument document)
1859internal void ResetPosition(XmlNode node)
1918XmlNode text = PreviousText(_source);
1926private XmlNode ParentNode(XmlNode node)
1928XmlNode parent = node.ParentNode;
1937private XmlNode ParentNodeTail(XmlNode parent)
1947private XmlNode FirstChild(XmlNode node)
1949XmlNode child = node.FirstChild;
1958private XmlNode FirstChildTail(XmlNode child)
1968private XmlNode NextSibling(XmlNode node)
1970XmlNode sibling = node.NextSibling;
1979private XmlNode NextSiblingTail(XmlNode node, XmlNode sibling)
1999private XmlNode PreviousSibling(XmlNode node)
2001XmlNode sibling = node.PreviousSibling;
2010private XmlNode PreviousSiblingTail(XmlNode node, XmlNode sibling)
2030private XmlNode PreviousText(XmlNode node)
2032XmlNode text = node.PreviousText;
2041private XmlNode PreviousTextTail(XmlNode node, XmlNode text)
2051XmlNode sibling = node.PreviousSibling;
2081internal static bool IsFollowingSibling(XmlNode left, XmlNode right)
2098private static bool IsDescendant(XmlNode top, XmlNode bottom)
2102XmlNode parent = bottom.ParentNode;
2125private static bool IsValidChild(XmlNode parent, XmlNode child)
2159private XmlNode TextStart(XmlNode node)
2161XmlNode start;
2173private XmlNode TextEnd(XmlNode node)
2175XmlNode end;
2222protected abstract bool Match(XmlNode node);
2266XmlNode node = (XmlNode)_nav.UnderlyingObject;
2281Debug.Assert(((XmlNode)nav.UnderlyingObject).NodeType != XmlNodeType.Attribute);
2292protected override bool Match(XmlNode node)
2318XmlNode node = (XmlNode)nav.UnderlyingObject;
2335Debug.Assert(((XmlNode)nav.UnderlyingObject).NodeType != XmlNodeType.Attribute);
2348protected override bool Match(XmlNode node)
2375XmlNode node = (XmlNode)nav.UnderlyingObject;
2393Debug.Assert(((XmlNode)nav.UnderlyingObject).NodeType != XmlNodeType.Attribute);
2413protected override bool Match(XmlNode node)
2442XmlNode node = (XmlNode)nav.UnderlyingObject;
FrameworkFork\Microsoft.Xml\Xml\Dom\XmlDocument.cs (41)
267public override XmlNode CloneNode(bool deep)
283public override XmlNode ParentNode
426private bool HasNodeTypeInPrevSiblings(XmlNodeType nt, XmlNode refNode)
431XmlNode node = null;
447private bool HasNodeTypeInNextSiblings(XmlNodeType nt, XmlNode refNode)
449XmlNode node = refNode;
459internal override bool CanInsertBefore(XmlNode newChild, XmlNode refChild)
502internal override bool CanInsertAfter(XmlNode newChild, XmlNode refChild)
696internal protected virtual XPathNavigator CreateNavigator(XmlNode node)
699XmlNode parent;
781private XmlNode NormalizeText(XmlNode n)
783XmlNode retnode = null;
791XmlNode intnode = retnode;
887public virtual XmlNode ImportNode(XmlNode node, bool deep)
892private XmlNode ImportNodeInternal(XmlNode node, bool deep)
894XmlNode newNode = null;
965private void ImportAttributes(XmlNode fromElem, XmlNode toElem)
975private void ImportChildren(XmlNode fromNode, XmlNode toNode, bool deep)
978for (XmlNode n = fromNode.FirstChild; n != null; n = n.NextSibling)
1051public virtual XmlNode CreateNode(XmlNodeType type, string prefix, string name, string namespaceURI)
1107public virtual XmlNode CreateNode(string nodeTypeString, string name, string namespaceURI)
1114public virtual XmlNode CreateNode(XmlNodeType type, string name, string namespaceURI)
1122public virtual XmlNode ReadNode(XmlReader reader)
1124XmlNode node = null;
1378XmlNode n = this.FirstChild;
1420foreach (XmlNode n in this)
1431public void Validate(ValidationEventHandler validationEventHandler, XmlNode nodeToValidate)
1526internal override XmlNodeChangedEventArgs GetEventArgs(XmlNode node, XmlNode oldParent, XmlNode newParent, string oldValue, string newValue, XmlNodeChangedAction action)
1554internal XmlNodeChangedEventArgs GetInsertEventArgsForLoad(XmlNode node, XmlNode newParent)
1721internal override XmlNode AppendChildForLoad(XmlNode newChild, XmlDocument doc)
FrameworkFork\Microsoft.Xml\Xml\Dom\XmlNode.cs (81)
21internal XmlNode parentNode; //this pointer is reused to save the userdata information, need to prevent internal user access the pointer directly.
47public XmlNode SelectSingleNode(string xpath)
55public XmlNode SelectSingleNode(string xpath, XmlNamespaceManager nsmgr)
111public virtual XmlNode ParentNode
149public virtual XmlNode PreviousSibling
155public virtual XmlNode NextSibling
180public virtual XmlNode FirstChild
193public virtual XmlNode LastChild
209internal bool AncestorNode(XmlNode node)
211XmlNode n = this.ParentNode;
226XmlNode parent = ParentNode;
233public virtual XmlNode InsertBefore(XmlNode newChild, XmlNode refChild)
264XmlNode first = newChild.FirstChild;
265XmlNode node = first;
347public virtual XmlNode InsertAfter(XmlNode newChild, XmlNode refChild)
378XmlNode last = refChild;
379XmlNode first = newChild.FirstChild;
380XmlNode node = first;
383XmlNode next = node.NextSibling;
465public virtual XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild)
467XmlNode nextNode = oldChild.NextSibling;
469XmlNode node = InsertBefore(newChild, nextNode);
474public virtual XmlNode RemoveChild(XmlNode oldChild)
560public virtual XmlNode PrependChild(XmlNode newChild)
566public virtual XmlNode AppendChild(XmlNode newChild)
589XmlNode first = newChild.FirstChild;
590XmlNode node = first;
593XmlNode next = node.NextSibling;
646internal virtual XmlNode AppendChildForLoad(XmlNode newChild, XmlDocument doc)
689internal virtual bool CanInsertBefore(XmlNode newChild, XmlNode refChild)
694internal virtual bool CanInsertAfter(XmlNode newChild, XmlNode refChild)
706public abstract XmlNode CloneNode(bool deep);
708internal virtual void CopyChildren(XmlDocument doc, XmlNode container, bool deep)
710for (XmlNode child = container.FirstChild; child != null; child = child.NextSibling)
725XmlNode firstChildTextLikeNode = null;
727for (XmlNode crtChild = this.FirstChild; crtChild != null;)
729XmlNode nextChild = crtChild.NextSibling;
737XmlNode winner = NormalizeWinner(firstChildTextLikeNode, crtChild);
772private XmlNode NormalizeWinner(XmlNode firstNode, XmlNode secondNode)
841internal static bool HasReadOnlyParent(XmlNode n)
864public virtual XmlNode Clone()
888for (XmlNode child = FirstChild; child != null; child = child.NextSibling)
909XmlNode fc = FirstChild;
933XmlNode firstChild = FirstChild;
1004XmlNode curNode = this.ParentNode; //save one while loop since if going to here, the nodetype of this node can't be document, entity and entityref
1032XmlNode child = FirstChild;
1033XmlNode sibling = null;
1071XmlNode node = this;
1156XmlNode node = this;
1224for (XmlNode n = FirstChild; n != null; n = n.NextSibling)
1239for (XmlNode n = FirstChild; n != null; n = n.NextSibling)
1248internal virtual void SetParent(XmlNode node)
1260internal virtual void SetParentForLoad(XmlNode node)
1280internal virtual XmlNode FindChild(XmlNodeType type)
1282for (XmlNode child = FirstChild; child != null; child = child.NextSibling)
1292internal virtual XmlNodeChangedEventArgs GetEventArgs(XmlNode node, XmlNode oldParent, XmlNode newParent, string oldValue, string newValue, XmlNodeChangedAction action)
1323XmlNode node = this;
1352XmlNode node = this;
1397public virtual XmlNode PreviousText
1405internal static void NestTextNodes(XmlNode prevNode, XmlNode nextNode)
1413internal static void UnnestTextNodes(XmlNode prevNode, XmlNode nextNode)
1426private XmlNode _node;
1428public DebuggerDisplayXmlNodeProxy(XmlNode node)
FrameworkFork\Microsoft.Xml\Xml\Serialization\XmlSerializationWriter.cs (12)
235else if (type == typeof(XmlNode[]))
347else if (typeof(XmlNode[]).IsAssignableFrom(t))
354XmlNode[] xmlNodes = (XmlNode[])o;
755protected void WriteElementEncoded(XmlNode node, string name, string ns, bool isNullable, bool any)
766protected void WriteElementLiteral(XmlNode node, string name, string ns, bool isNullable, bool any)
776private void WriteElement(XmlNode node, string name, string ns, bool isNullable, bool any)
926protected void WriteXmlAttribute(XmlNode node)
932protected void WriteXmlAttribute(XmlNode node, object container)
1372if (Convert.GetTypeCode(o) == TypeCode.Object && !(o is Guid) && (t != typeof(XmlQualifiedName)) && !(o is XmlNode[]) && (t != typeof(byte[])))
3417Writer.Write(typeof(XmlNode).FullName);
3424WriteElementCall("WriteElementLiteral", typeof(XmlNode), source, name, ns, element.IsNullable, element.Any);
FrameworkFork\System.Web.Services\Services\Description\ServiceDescriptionSerializer.cs (108)
54if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
56WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
68if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
70WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
165if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
167WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
179if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
181WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
236if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
238WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
267if ((elem) is Microsoft.Xml.XmlNode || elem == null)
269WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
407if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
409WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
438if ((elem) is Microsoft.Xml.XmlNode || elem == null)
440WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
503if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
505WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
534if ((elem) is Microsoft.Xml.XmlNode || elem == null)
536WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
601if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
603WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
628if ((elem) is Microsoft.Xml.XmlNode || elem == null)
630WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
781if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
783WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
832if ((elem) is Microsoft.Xml.XmlNode || elem == null)
834WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
947if ((elem) is Microsoft.Xml.XmlNode || elem == null)
949WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
1391if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
1393WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
1450if ((elem) is Microsoft.Xml.XmlNode || elem == null)
1452WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
1771if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
1773WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
1785if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
1787WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
1845if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
1847WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
1859if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
1861WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
1943if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
1945WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
1957if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
1959WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
2004if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
2006WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
2018if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
2020WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
2065if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
2067WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
2079if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
2081WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
2125if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
2127WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
2139if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
2141WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
2197if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
2199WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
2211if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
2213WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
2256if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
2258WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
2270if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
2272WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
2517Microsoft.Xml.XmlNode[] a = (Microsoft.Xml.XmlNode[])o.@Markup;
2522Microsoft.Xml.XmlNode ai = (Microsoft.Xml.XmlNode)a[ia];
2527if ((elem) is Microsoft.Xml.XmlNode || elem == null)
2529WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
2536else if (ai is Microsoft.Xml.XmlNode)
2538((Microsoft.Xml.XmlNode)ai).WriteTo(Writer);
2577Microsoft.Xml.XmlNode[] a = (Microsoft.Xml.XmlNode[])o.@Markup;
2582Microsoft.Xml.XmlNode ai = (Microsoft.Xml.XmlNode)a[ia];
2587if ((elem) is Microsoft.Xml.XmlNode || elem == null)
2589WriteElementLiteral((Microsoft.Xml.XmlNode)elem, @"", null, false, true);
2596else if (ai is Microsoft.Xml.XmlNode)
2598((Microsoft.Xml.XmlNode)ai).WriteTo(Writer);
5149if ((o.@DocumentationElement) is Microsoft.Xml.XmlNode || o.@DocumentationElement == null)
5151WriteElementLiteral((Microsoft.Xml.XmlNode)o.@DocumentationElement, @"documentation", @"http://schemas.xmlsoap.org/wsdl/", false, true);
5163if ((a[ia]) is Microsoft.Xml.XmlNode || a[ia] == null)
5165WriteElementLiteral((Microsoft.Xml.XmlNode)a[ia], @"", null, false, true);
8905Microsoft.Xml.XmlNode[] a_2 = null;
8929o.@Markup = (Microsoft.Xml.XmlNode[])ShrinkArray(a_2, ca_2, typeof(Microsoft.Xml.XmlNode), true);
8940a_2 = (Microsoft.Xml.XmlNode[])EnsureArrayIndex(a_2, ca_2, typeof(Microsoft.Xml.XmlNode)); a_2[ca_2++] = (Microsoft.Xml.XmlNode)ReadXmlNode(false);
8947a_2 = (Microsoft.Xml.XmlNode[])EnsureArrayIndex(a_2, ca_2, typeof(Microsoft.Xml.XmlNode)); a_2[ca_2++] = (Microsoft.Xml.XmlNode)Document.CreateTextNode(Reader.ReadString());
8956o.@Markup = (Microsoft.Xml.XmlNode[])ShrinkArray(a_2, ca_2, typeof(Microsoft.Xml.XmlNode), true);
8978Microsoft.Xml.XmlNode[] a_3 = null;
9007o.@Markup = (Microsoft.Xml.XmlNode[])ShrinkArray(a_3, ca_3, typeof(Microsoft.Xml.XmlNode), true);
9018a_3 = (Microsoft.Xml.XmlNode[])EnsureArrayIndex(a_3, ca_3, typeof(Microsoft.Xml.XmlNode)); a_3[ca_3++] = (Microsoft.Xml.XmlNode)ReadXmlNode(false);
9025a_3 = (Microsoft.Xml.XmlNode[])EnsureArrayIndex(a_3, ca_3, typeof(Microsoft.Xml.XmlNode)); a_3[ca_3++] = (Microsoft.Xml.XmlNode)Document.CreateTextNode(Reader.ReadString());
9034o.@Markup = (Microsoft.Xml.XmlNode[])ShrinkArray(a_3, ca_3, typeof(Microsoft.Xml.XmlNode), true);