internal void ExpandEntityReference(XmlEntityReference eref) { this.doc = eref.OwnerDocument; bool isLoading = this.doc.IsLoading; this.doc.IsLoading = true; switch (eref.Name) { case "lt": eref.AppendChildForLoad(this.doc.CreateTextNode("<"), this.doc); this.doc.IsLoading = isLoading; return; case "gt": eref.AppendChildForLoad(this.doc.CreateTextNode(">"), this.doc); this.doc.IsLoading = isLoading; return; case "amp": eref.AppendChildForLoad(this.doc.CreateTextNode("&"), this.doc); this.doc.IsLoading = isLoading; return; case "apos": eref.AppendChildForLoad(this.doc.CreateTextNode("'"), this.doc); this.doc.IsLoading = isLoading; return; case "quot": eref.AppendChildForLoad(this.doc.CreateTextNode("\""), this.doc); this.doc.IsLoading = isLoading; return; } foreach (XmlEntity entity in this.doc.Entities) { if (Ref.Equal(entity.Name, eref.Name)) { this.ParsePartialContent(eref, this.EntitizeName(eref.Name), XmlNodeType.EntityReference); return; } } if (!this.doc.ActualLoadingStatus) { eref.AppendChildForLoad(this.doc.CreateTextNode(""), this.doc); this.doc.IsLoading = isLoading; } else { this.doc.IsLoading = isLoading; throw new XmlException("Xml_UndeclaredParEntity", eref.Name); } }
//The function is called when expanding the entity ref. ( inside XmlEntityReference.SetParent ) internal void ExpandEntityReference(XmlEntityReference eref) { //when the ent ref is not associated w/ an entity, append an empty string text node as child _doc = eref.OwnerDocument; bool bOrigLoadingState = _doc.IsLoading; _doc.IsLoading = true; switch (eref.Name) { case "lt": eref.AppendChildForLoad(_doc.CreateTextNode("<"), _doc); _doc.IsLoading = bOrigLoadingState; return; case "gt": eref.AppendChildForLoad(_doc.CreateTextNode(">"), _doc); _doc.IsLoading = bOrigLoadingState; return; case "amp": eref.AppendChildForLoad(_doc.CreateTextNode("&"), _doc); _doc.IsLoading = bOrigLoadingState; return; case "apos": eref.AppendChildForLoad(_doc.CreateTextNode("'"), _doc); _doc.IsLoading = bOrigLoadingState; return; case "quot": eref.AppendChildForLoad(_doc.CreateTextNode("\""), _doc); _doc.IsLoading = bOrigLoadingState; return; } XmlNamedNodeMap entities = _doc.Entities; foreach (XmlEntity ent in entities) { if (Ref.Equal(ent.Name, eref.Name)) { ParsePartialContent(eref, EntitizeName(eref.Name), XmlNodeType.EntityReference); return; } } //no fit so far if (!(_doc.ActualLoadingStatus)) { eref.AppendChildForLoad(_doc.CreateTextNode(""), _doc); _doc.IsLoading = bOrigLoadingState; } else { _doc.IsLoading = bOrigLoadingState; throw new XmlException(SR.Format(SR.Xml_UndeclaredParEntity, eref.Name)); } }