Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
                        }
                    }
                }
            }
        }