public void DomReaderMiscNodeTest() { Body body = new Body(new Paragraph(new ParagraphProperties(), new Run(new Text("test")))); body.PrependChild(new OpenXmlMiscNode(System.Xml.XmlNodeType.Comment, "<!-- start body -->")); //======== new test with a new reader ======== using (OpenXmlReader reader = OpenXmlReader.Create(body, true)) // read misc node { Assert.False(reader.EOF); bool moved = reader.Read(); Assert.True(moved); Assert.False(reader.EOF); Assert.Equal(0, reader.Depth); Assert.True(reader.IsStartElement); Assert.False(reader.IsEndElement); Assert.False(reader.IsMiscNode); Assert.Equal("body", reader.LocalName); moved = reader.Read(); Assert.True(moved); Assert.False(reader.EOF); Assert.Equal(1, reader.Depth); Assert.False(reader.IsStartElement); Assert.False(reader.IsEndElement); Assert.True(reader.IsMiscNode); Assert.Equal("#comment", reader.LocalName); Assert.Equal(string.Empty, reader.Prefix); Assert.Equal(string.Empty, reader.NamespaceUri); } // test case: for ReadFirstChild using (var reader = OpenXmlReader.Create(body, true)) // read misc nodes { Assert.False(reader.EOF); var moved = reader.Read(); Assert.False(reader.EOF); moved = reader.ReadFirstChild(); Assert.True(moved); Assert.False(reader.EOF); Assert.Equal(1, reader.Depth); Assert.False(reader.IsStartElement); Assert.False(reader.IsEndElement); Assert.True(reader.IsMiscNode); Assert.Equal("#comment", reader.LocalName); Assert.Equal(string.Empty, reader.Prefix); Assert.Equal(string.Empty, reader.NamespaceUri); } OpenXmlElement miscNode = body.RemoveChild(body.FirstChild); body.AppendChild(miscNode); using (var reader = OpenXmlReader.Create(body, true)) // read misc nodes { Assert.False(reader.EOF); var moved = reader.Read(); Assert.False(reader.EOF); moved = reader.ReadFirstChild(); reader.Skip(); Assert.True(moved); Assert.False(reader.EOF); Assert.Equal(1, reader.Depth); Assert.False(reader.IsStartElement); Assert.False(reader.IsEndElement); Assert.True(reader.IsMiscNode); Assert.Equal(string.Empty, reader.Prefix); Assert.Equal(string.Empty, reader.NamespaceUri); } // test case: root element is misc node using (var reader = OpenXmlReader.Create(new OpenXmlMiscNode(System.Xml.XmlNodeType.ProcessingInstruction, "<?pi test?>"), true)) { var moved = reader.Read(); Assert.True(moved); Assert.False(reader.EOF); Assert.Equal(0, reader.Depth); Assert.False(reader.IsStartElement); Assert.False(reader.IsEndElement); Assert.True(reader.IsMiscNode); Assert.Equal("pi", reader.LocalName); Assert.Equal(string.Empty, reader.Prefix); Assert.Equal(string.Empty, reader.NamespaceUri); reader.Close(); } // case bug #253890 body = new Body(new Paragraph(new ParagraphProperties(), new Run(new Text("test")))); miscNode = body.AppendChild(new OpenXmlMiscNode(System.Xml.XmlNodeType.Comment, "<!-- start body -->")); using (var reader = OpenXmlReader.Create(body.FirstChild, true)) { var moved = reader.Read(); Assert.True(moved); Assert.False(reader.EOF); Assert.Equal(0, reader.Depth); Assert.True(reader.IsStartElement); Assert.False(reader.IsEndElement); Assert.False(reader.IsMiscNode); Assert.Equal("p", reader.LocalName); reader.Skip(); Assert.True(reader.EOF); reader.Close(); } // case bug #253890 using (var reader = OpenXmlReader.Create(body.FirstChild, true)) { var moved = reader.Read(); reader.ReadNextSibling(); Assert.True(reader.EOF); } // case bug #253890 using (var reader = OpenXmlReader.Create(body.FirstChild, true)) { var moved = reader.Read(); moved = reader.Read(); moved = reader.ReadNextSibling(); moved = reader.ReadNextSibling(); Assert.False(moved); Assert.False(reader.EOF); Assert.Equal(0, reader.Depth); Assert.False(reader.IsStartElement); Assert.True(reader.IsEndElement); Assert.False(reader.IsMiscNode); Assert.Equal("p", reader.LocalName); // call ReadNextSibling() on EndElement reader.ReadNextSibling(); Assert.True(reader.EOF); } }
internal void FromStringItem(StringItem si) { this.SetAllNull(); if (si.Val != null) { this.Val = si.Val.Value; } if (si.Unused != null) { this.Unused = si.Unused.Value; } if (si.Calculated != null) { this.Calculated = si.Calculated.Value; } if (si.Caption != null) { this.Caption = si.Caption.Value; } if (si.PropertyCount != null) { this.PropertyCount = si.PropertyCount.Value; } if (si.FormatIndex != null) { this.FormatIndex = si.FormatIndex.Value; } if (si.BackgroundColor != null) { this.BackgroundColor = si.BackgroundColor.Value; } if (si.ForegroundColor != null) { this.ForegroundColor = si.ForegroundColor.Value; } if (si.Italic != null) { this.Italic = si.Italic.Value; } if (si.Underline != null) { this.Underline = si.Underline.Value; } if (si.Strikethrough != null) { this.Strikethrough = si.Strikethrough.Value; } if (si.Bold != null) { this.Bold = si.Bold.Value; } SLTuplesType tt; MemberPropertyIndex mpi; using (OpenXmlReader oxr = OpenXmlReader.Create(si)) { while (oxr.Read()) { if (oxr.ElementType == typeof(Tuples)) { tt = new SLTuplesType(); tt.FromTuples((Tuples)oxr.LoadCurrentElement()); this.Tuples.Add(tt); } else if (oxr.ElementType == typeof(MemberPropertyIndex)) { // 0 is the default value. mpi = (MemberPropertyIndex)oxr.LoadCurrentElement(); if (mpi.Val != null) { this.MemberPropertyIndexes.Add(mpi.Val.Value); } else { this.MemberPropertyIndexes.Add(0); } } } } }