/// <summary> /// Creates a new documentation element. /// </summary> public XmlDocumentationElement(AXmlDocument document, ISymbol declaringEntity) { if (document == null) { throw new ArgumentNullException("document"); } this.xmlObject = document; this.declaringEntity = declaringEntity; }
IList<AXmlObject> CreatePublic(IList<InternalObject> internalObjects) { var publicObjects = new AXmlObject[internalObjects.Count]; int pos = 0; for (int i = 0; i < internalObjects.Count; i++) { publicObjects[i] = internalObjects[i].CreatePublicObject(null, pos); pos += internalObjects[i].Length; } return publicObjects; }
IList <AXmlObject> CreatePublic(IList <InternalObject> internalObjects) { var publicObjects = new AXmlObject[internalObjects.Count]; int pos = 0; for (int i = 0; i < internalObjects.Count; i++) { publicObjects[i] = internalObjects[i].CreatePublicObject(null, pos); pos += internalObjects[i].Length; } return(publicObjects); }
int GetAttributeIndex(string name, string ns) { if (attributes == null) { return(-1); } for (int i = 0; i < attributes.Count; i++) { if (AXmlObject.GetLocalName(attributes[i].Name) == name && (LookupNamespace(AXmlObject.GetNamespacePrefix(attributes[i].Name)) ?? string.Empty) == ns) { return(i); } } return(-1); }
internal AXmlElement(AXmlObject parent, int startOffset, InternalElement internalObject) : base(parent, startOffset, internalObject) { Log.Assert(internalObject.NestedObjects[0] is InternalTag, "First child of element must be start tag"); }
internal AXmlTag(AXmlObject parent, int startOffset, InternalTag internalObject) : base(parent, startOffset, internalObject) { this.internalObject = internalObject; }
public override AXmlObject CreatePublicObject(AXmlObject parent, int parentStartOffset) { return new AXmlTag(parent, (parent != null ? parentStartOffset + StartRelativeToParent : parentStartOffset), this); }
public abstract AXmlObject CreatePublicObject(AXmlObject parent, int parentStartOffset);
public override AXmlObject CreatePublicObject(AXmlObject parent, int parentStartOffset) { return(new AXmlText(parent, (parent != null ? parentStartOffset + StartRelativeToParent : parentStartOffset), this)); }
public abstract AXmlObject CreatePublicObject(AXmlObject parent, int parentStartOffset);
internal AXmlAttribute(AXmlObject parent, int startOffset, InternalAttribute internalObject) : base(parent, startOffset, internalObject) { }
internal AXmlAttribute(AXmlObject parent, int startOffset, InternalAttribute internalObject) : base(parent, startOffset, internalObject) { }
internal AXmlDocument(AXmlObject parent, int startOffset, InternalDocument internalObject) : base(parent, startOffset, internalObject) { }
internal AXmlDocument(AXmlObject parent, int startOffset, InternalDocument internalObject) : base(parent, startOffset, internalObject) { }
internal AXmlTag(AXmlObject parent, int startOffset, InternalTag internalObject) : base(parent, startOffset, internalObject) { this.internalObject = internalObject; }
bool ReadCurrentPosition() { attributes = null; attributeIndex = -1; inAttributeValue = false; while (true) { var obj = objectIterator.CurrentObject; if (obj == null) { readState = ReadState.EndOfFile; elementNodeType = XmlNodeType.None; return(false); } else if (objectIterator.IsAtElementEnd) { if (IsEmptyElement) { // Don't report EndElement for empty elements nsManager.PopScope(); } else { elementNodeType = XmlNodeType.EndElement; return(true); } } else if (obj is InternalElement) { // element start elementNodeType = XmlNodeType.Element; InternalTag startTag = ((InternalTag)obj.NestedObjects[0]); nsManager.PushScope(); if (startTag.NestedObjects != null) { attributes = startTag.NestedObjects.OfType <InternalAttribute>().ToList(); for (int i = 0; i < attributes.Count; i++) { var attr = attributes[i]; if (attr.Name.StartsWith("xmlns:", StringComparison.Ordinal)) { nsManager.AddNamespace(AXmlObject.GetLocalName(attr.Name), attr.Value); } else if (attr.Name == "xmlns") { nsManager.AddNamespace(string.Empty, attr.Value); } } } return(true); } else if (obj is InternalText) { InternalText text = (InternalText)obj; if (text.ContainsOnlyWhitespace) { elementNodeType = XmlNodeType.Whitespace; } else { elementNodeType = XmlNodeType.Text; } return(true); } else if (obj is InternalTag) { InternalTag tag = (InternalTag)obj; if (tag.IsStartOrEmptyTag || tag.IsEndTag) { // start/end tags can be skipped as the parent InternalElement already handles them } else if (tag.IsComment && !settings.IgnoreComments) { elementNodeType = XmlNodeType.Comment; return(true); } else if (tag.IsProcessingInstruction && !settings.IgnoreProcessingInstructions) { if (tag.Name == "xml") { elementNodeType = XmlNodeType.XmlDeclaration; attributes = tag.NestedObjects.OfType <InternalAttribute>().ToList(); } else { elementNodeType = XmlNodeType.ProcessingInstruction; } return(true); } else if (tag.IsCData) { elementNodeType = XmlNodeType.CDATA; return(true); } else { // TODO all other tags } } else { throw new NotSupportedException(); } objectIterator.MoveInto(); } }
internal AXmlText(AXmlObject parent, int startOffset, InternalText internalObject) : base(parent, startOffset, internalObject) { }
internal AXmlObject(AXmlObject parent, int startOffset, InternalObject internalObject) { this.parent = parent; this.startOffset = startOffset; this.internalObject = internalObject; }
internal AXmlElement(AXmlObject parent, int startOffset, InternalElement internalObject) : base(parent, startOffset, internalObject) { Log.Assert(internalObject.NestedObjects[0] is InternalTag, "First child of element must be start tag"); }
internal AXmlText(AXmlObject parent, int startOffset, InternalText internalObject) : base(parent, startOffset, internalObject) { }
internal AXmlObject(AXmlObject parent, int startOffset, InternalObject internalObject) { this.parent = parent; this.startOffset = startOffset; this.internalObject = internalObject; }
/// <summary> /// Creates a new documentation element. /// </summary> public XmlDocumentationElement(AXmlDocument document, ISymbol declaringEntity) { if (document == null) throw new ArgumentNullException("document"); this.xmlObject = document; this.declaringEntity = declaringEntity; }