private static string GetSharedString(SharedStringTable table, int index) { var item = table.Descendants <SharedStringItem>() .Skip(index) .FirstOrDefault(); if (item != null) { return(item.Text.InnerText); } return(string.Empty); }
/// <summary> /// Initializes the indexer from the target shared string table. /// </summary> /// <param name="toIndex">The shared string table to index.</param> private void Initialize(SharedStringTable toIndex) { this.SharedStringTable = toIndex; if (toIndex.Count > 0) { // Table already has entries var sharedStrings = toIndex.Descendants<SharedStringItem>() .Select(x => x.InnerText); long idx = 0; foreach (var sharedStr in sharedStrings) { this.indexDict[sharedStr] = idx; this.strDict[idx] = sharedStr; idx++; } this.currentIndex = toIndex.UniqueCount; } }