/// <summary> /// Initializes a new instance of the <see cref="ElementState"/> class. /// </summary> /// <param name="consumer">The consumer that is consuming the file contents.</param> internal ElementState(IXliffDataConsumer consumer) { this.Consumer = consumer; this.LastOrdinalRead = -1; this.inputOrderMap = this.BuildInputOrderDictionary(); }
/// <summary> /// Adds the specified <see cref="XliffElement"/> to this object in the appropriate place depending on /// the type and attributes. /// </summary> /// <param name="name">The name of the child to add.</param> /// <param name="child">The <see cref="XliffElement"/> to add.</param> void IXliffDataConsumer.AddXliffChild(XmlNameInfo name, IXliffDataConsumer child) { ArgValidator validator; validator = ArgValidator.Create(child, "child").IsNotNull().IsOfType(typeof(XliffElement)); if (this.registered) { validator.IsOfType(this.childMap.Keys); } if (!this.StoreChild(new ElementInfo(name, (XliffElement)child))) { string message; message = string.Format( Properties.Resources.XliffElement_InvalidElement_Format, child.GetType().Name, this.GetType().Name); throw new InvalidOperationException(message); } }
/// <summary> /// Deserializes the attributes at the reader's current position and stores them in the /// <paramref name="currentElement"/>. /// </summary> /// <param name="currentElement">The element associated with the reader's current position.</param> private void DeserializeAttributes(IXliffDataConsumer currentElement) { if (this.reader.MoveToFirstAttribute()) { IExtensible extensible; extensible = currentElement as IExtensible; do { SetAttributeResult setResult; XmlNameInfo name; name = new XmlNameInfo(this.reader.Prefix, this.reader.NamespaceURI, this.reader.LocalName); setResult = currentElement.TrySetAttributeValue(name, this.reader.Value); if ((setResult == SetAttributeResult.InvalidAttribute) || ((setResult == SetAttributeResult.PossibleExtension) && (this.StoreAttributeExtension(extensible) == SetAttributeResult.InvalidAttribute))) { string message; if (string.IsNullOrEmpty(name.Prefix)) { message = name.LocalName; } else { message = string.Join(":", name.Prefix, name.LocalName); } message = string.Format( Properties.Resources.XliffReader_InvalidAttributeName_Format, message, currentElement.GetType().Name); throw new NotSupportedException(message); } }while (this.reader.MoveToNextAttribute()); } }
/// <summary> /// Deserializes the attributes at the reader's current position and stores them in the /// <paramref name="currentElement"/>. /// </summary> /// <param name="currentElement">The element associated with the reader's current position.</param> private void DeserializeAttributes(IXliffDataConsumer currentElement) { if (this.reader.MoveToFirstAttribute()) { IExtensible extensible; extensible = currentElement as IExtensible; do { SetAttributeResult setResult; XmlNameInfo name; name = new XmlNameInfo(this.reader.Prefix, this.reader.NamespaceURI, this.reader.LocalName); setResult = currentElement.TrySetAttributeValue(name, this.reader.Value); if ((setResult == SetAttributeResult.InvalidAttribute) || ((setResult == SetAttributeResult.PossibleExtension) && (this.StoreAttributeExtension(extensible) == SetAttributeResult.InvalidAttribute))) { string message; if (string.IsNullOrEmpty(name.Prefix)) { message = name.LocalName; } else { message = string.Join(":", name.Prefix, name.LocalName); } message = string.Format( Properties.Resources.XliffReader_InvalidAttributeName_Format, message, currentElement.GetType().Name); throw new NotSupportedException(message); } } while (this.reader.MoveToNextAttribute()); } }