/// <summary> /// Creates an instance of a <see cref="CacheItem"/> object given a type and value. /// </summary> /// <param name="namespaceManager">The namespace manager.</param> /// <param name="parentNode">The parent xml node. It must be a sharedItems <see cref="XmlNode"/> or a cacheRecord <see cref="XmlNode"/>.</param> /// <param name="type">The type of this item.</param> /// <param name="value">The value of this item.</param> public CacheItem(XmlNamespaceManager namespaceManager, XmlNode parentNode, PivotCacheRecordType type, string value) : base(namespaceManager, null) { if (parentNode == null) { throw new ArgumentNullException(nameof(parentNode)); } base.TopNode = parentNode.OwnerDocument.CreateElement(type.ToString(), parentNode.NamespaceURI); this.Type = type; var attr = parentNode.OwnerDocument.CreateAttribute("v"); base.TopNode.Attributes.Append(attr); this.Value = value; }
/// <summary> /// Replace <see cref="XmlNode"/> with new node type and value. /// </summary> /// <param name="type">The new <see cref="PivotCacheRecordType"/>.</param> /// <param name="value">The value.</param> /// <param name="parentNode">The parent <see cref="XmlNode"/>.</param> public void ReplaceNode(PivotCacheRecordType type, string value, XmlNode parentNode) { if (parentNode == null) { throw new ArgumentNullException(nameof(parentNode)); } var newNode = parentNode.OwnerDocument.CreateElement(type.ToString(), parentNode.NamespaceURI); if (type != PivotCacheRecordType.m) { var attr = parentNode.OwnerDocument.CreateAttribute("v"); newNode.Attributes.Append(attr); } parentNode.ReplaceChild(newNode, base.TopNode); base.TopNode = newNode; this.Type = type; this.Value = value; }
/// <summary> /// Creates an instance of a <see cref="CacheItem"/> object given a type and value. /// </summary> /// <param name="namespaceManager">The namespace manager.</param> /// <param name="parentNode">The parent xml node. It must be a sharedItems <see cref="XmlNode"/> or a cacheRecord <see cref="XmlNode"/>.</param> /// <param name="type">The type of this item.</param> /// <param name="value">The value of this item.</param> public CacheItem(XmlNamespaceManager namespaceManager, XmlNode parentNode, PivotCacheRecordType type, string value) : base(namespaceManager, null) { if (parentNode == null) { throw new ArgumentNullException(nameof(parentNode)); } if (parentNode.LocalName != "sharedItems" && parentNode.LocalName != "r") { throw new ArgumentException($"{nameof(parentNode)} type: '{parentNode.Name}' was not the expected type."); } base.TopNode = parentNode.OwnerDocument.CreateElement(type.ToString(), parentNode.NamespaceURI); this.Type = type; if (!string.IsNullOrEmpty(value)) { var attr = parentNode.OwnerDocument.CreateAttribute("v"); base.TopNode.Attributes.Append(attr); this.Value = value; } }