public void WritePrioritizeInnerXmlSpaceTest()
        {
            var root = new SavannahTagNode
            {
                TagName            = "root",
                PrioritizeInnerXml = "       aaaaaa\naa\n  aaaa"
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                InnerText  = "       aaaaaa\naa\n  aaaa",
                ChildNodes = new[]
                {
                    new SavannahTextNode
                    {
                        InnerText = "       aaaaaa\naa\n  aaaa"
                    },
                }
            };

            root.ResolvePrioritizeInnerXml(false);

            var xml    = $"{SavannahXmlConstants.Declaration}\n{root}";
            var data   = Encoding.UTF8.GetBytes(xml);
            var stream = new MemoryStream();

            stream.Write(data, 0, data.Length);
            stream.Position = 0;

            var reader = new SavannahXmlReader(stream);
            var node   = reader.GetAllNodes();

            Assert.AreEqual(exp, node);
        }
        public void WriteCdataTest()
        {
            var root = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new []
                {
                    new SavannahTagNode
                    {
                        TagName    = "tag",
                        InnerText  = "",
                        ChildNodes = new[]
                        {
                            new SavannahCdataNode
                            {
                                InnerText = "  <?xml version=\"1.0\"?>\n  <document>\n      doc.\n  </document>",
                            }
                        }
                    }
                }
            };

            var ms     = new MemoryStream();
            var writer = new SavannahXmlWriter();

            writer.Write(ms, root);
            ms.Position = 0;
            var xml = new StreamReader(ms).ReadToEnd();
            var exp = File.ReadAllText(CommonXmlReaderTest.GetTestPath("Cdata.xml")).UnifiedBreakLine();

            Assert.AreEqual(exp, xml);
        }
        /// <summary>
        /// Convert PrioritizeInnerXml To regular XML text.
        /// </summary>
        /// <param name="node">Target node</param>
        /// <returns>Stream written regular XML text.</returns>
        public static Stream ConvertInnerXmlToXmlText(SavannahTagNode node)
        {
            var lines     = node.PrioritizeInnerXml.UnifiedBreakLine().Split('\n');
            var spaceText = AbstractSavannahXmlNode.MakeSpace(AbstractSavannahXmlNode.DefaultIndentSize);
            var converted = string.Join("\n", lines.Select(x => $"{spaceText}{x}"));

            var xml          = $"\n{converted}\n";
            var xDocument    = new XmlDocument();
            var xDeclaration = xDocument.CreateProcessingInstruction("xml", SavannahXmlConstants.Utf8Declaration);
            var elem         = xDocument.CreateElement("root");

            xDocument.AppendChild(xDeclaration);
            elem.InnerXml = xml;
            xDocument.AppendChild(elem);

            var ms     = new MemoryStream();
            var writer = new XmlTextWriter(ms, Encoding.Unicode)
            {
                Formatting  = Formatting.Indented,
                Indentation = AbstractSavannahXmlNode.DefaultIndentSize,
                IndentChar  = ' '
            };

            xDocument.WriteContentTo(writer);
            writer.Flush();
            ms.Flush();
            ms.Position = 0;

            return(ms);
        }
        public void GetNodeTest()
        {
            var exp = new SavannahTagNode
            {
                TagName    = "property",
                Attributes = new List <AttributeInfo>
                {
                    new AttributeInfo
                    {
                        Name  = "name",
                        Value = "ServerName"
                    },
                    new AttributeInfo
                    {
                        Name  = "value",
                        Value = "My Game Host"
                    }
                },
                ChildNodes = new[]
                {
                    new SavannahTextNode
                    {
                        InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。"
                    }
                },
                InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。"
            };

            var reader     = new SavannahXmlReader(GetTestPath());
            var firstNode  = reader.GetNode("/ServerSettings/property[@name='ServerName']");
            var SecondNode = reader.GetNode("/ServerSettings/property[@name='ServerName']");

            Assert.AreEqual(exp, firstNode);
            Assert.AreEqual(exp, SecondNode);
        }
        public void ReadCdataTest()
        {
            var reader = new SavannahXmlReader(GetTestPath("Cdata.xml"));
            var root   = reader.GetAllNodes();

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "tag",
                        InnerText  = "",
                        ChildNodes = new[]
                        {
                            new SavannahCdataNode
                            {
                                InnerText = "  <?xml version=\"1.0\"?>\n  <document>\n      doc.\n  </document>",
                            }
                        }
                    }
                }
            };

            Assert.AreEqual(exp, root);
        }
Exemple #6
0
        public void ToStringIndentTest()
        {
            var commonXmlNode2 = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "ChildNode",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "attr"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "Value"
                            }
                        }
                    }
                }
            };

            var exp = "<root>\n    <ChildNode name=\"attr\">\n        Value\n    </ChildNode>\n</root>";
            var act = commonXmlNode2.ToString(4);

            Assert.AreEqual(exp, act);
        }
Exemple #7
0
        public void WritePrioritizeInnerXmlSpaceTest2()
        {
            var root = new SavannahTagNode
            {
                TagName            = "root",
                PrioritizeInnerXml = "aaa\n<br />\n       bbb\n<br />\nbbb\n<br />\ncccc\n<test>\n  <bbb />\n</test>\n"
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTextNode
                    {
                        InnerText = "aaa"
                    },
                    new SavannahTagNode
                    {
                        TagName = "br"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "       bbb"
                    },
                    new SavannahTagNode
                    {
                        TagName = "br"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "bbb"
                    },
                    new SavannahTagNode
                    {
                        TagName = "br"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "cccc"
                    },
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        ChildNodes = new []
                        {
                            new SavannahTagNode
                            {
                                TagName = "bbb"
                            }
                        }
                    }
                }
            };

            root.ResolvePrioritizeInnerXml(false);

            Assert.AreEqual(exp, root);
        }
        /// <summary>
        /// Writes the XML to the specified file.
        /// </summary>
        /// <param name="stream">Stream to be written</param>
        /// <param name="root">The root of the XML to be written</param>
        public void Write(Stream stream, SavannahTagNode root)
        {
            root.ResolvePrioritizeInnerXml(IgnoreComments);
            var xml         = root.ToString();
            var declaration = xDeclaration.OuterXml;
            var data        = Encoding.UTF8.GetBytes($"{declaration}\n{xml}\n");

            stream.Write(data, 0, data.Length);
        }
Exemple #9
0
        public void SearchElementWithXPathTest()
        {
            var textNode = new SavannahTextNode
            {
                InnerText = "aaa"
            };
            var testNode = new SavannahTagNode
            {
                TagName    = "test",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "br",
                        Attributes = new List <AttributeInfo>
                        {
                            new AttributeInfo
                            {
                                Name  = "attr",
                                Value = "value"
                            }
                        }
                    },
                }
            };

            var root = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTagNode
                    {
                        TagName = "test"
                    },
                    textNode,
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        ChildNodes = new []
                        {
                            new SavannahTagNode
                            {
                                TagName = "br"
                            },
                        }
                    },
                    testNode
                }
            };

            var testReader     = ((SavannahTagNode)root.ChildNodes.ToArray()[3]).GetReader();
            var resultTestNode = testReader.GetNode("/test/br");

            Assert.AreEqual(resultTestNode, testNode.ChildNodes.First());
        }
        public void WriteTestPrioritizeInnerXml()
        {
            var root = new SavannahTagNode
            {
                TagName = "root"
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new []
                {
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        InnerText  = "test\naaaa\nbbb",
                        ChildNodes = new AbstractSavannahXmlNode[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "test"
                            },
                            new SavannahTagNode
                            {
                                TagName = "br"
                            },
                            new SavannahTextNode
                            {
                                InnerText = "aaaa"
                            },
                            new SavannahTagNode
                            {
                                TagName = "br"
                            },
                            new SavannahTextNode
                            {
                                InnerText = "bbb"
                            }
                        }
                    }
                }
            };

            root.PrioritizeInnerXml = "<test>test<br />aaaa<br />bbb</test>";

            var writer = new SavannahXmlWriter("version=\"1.0\" encoding=\"UTF-8\"");

            using var ms = new MemoryStream();
            writer.Write(ms, root);
            ms.Seek(0, SeekOrigin.Begin);

            var reader = new SavannahXmlReader(ms);
            var act    = reader.GetAllNodes();

            Assert.AreEqual(exp, act);
        }
Exemple #11
0
        public void RemoveAttributeTest()
        {
            var itemNode = SavannahTagNode.CreateElement("item", new[] { new AttributeInfo
                                                                         {
                                                                             Name  = "attr",
                                                                             Value = "value"
                                                                         } });
            var exp = SavannahTagNode.CreateElement("item");

            itemNode.RemoveAttribute("attr");

            Assert.AreEqual(exp, itemNode);
        }
Exemple #12
0
        public void AddBeforeSameChildTest()
        {
            var root = new SavannahTagNode
            {
                TagName            = "root",
                PrioritizeInnerXml = "<br />\naaaa\n<br />\nbbb\n<br />\nccc"
            };

            root.ResolvePrioritizeInnerXml();

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTagNode
                    {
                        TagName = "br"
                    },
                    new SavannahTagNode
                    {
                        TagName = "br"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "aaaa"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "bbb"
                    },
                    new SavannahTagNode
                    {
                        TagName = "br"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "ccc"
                    }
                }
            };

            var newNode = root.ChildNodes.ElementAt(2);
            var target  = root.ChildNodes.ElementAt(1);

            root.RemoveChildElement(newNode);
            root.AddBeforeChildElement(target, newNode);

            Assert.AreEqual(exp, root);
        }
        /// <summary>
        /// Convert the XmlNode object to the SavannahXmlNode object.
        /// </summary>
        /// <param name="node">XmlNode object.</param>
        /// <param name="isRemoveSpace">Whether to clear indentation blanks.</param>
        /// <param name="table">
        ///   This is a table of XmlNode and SavannahXmlNode.
        ///   It associates the generated SavannahXmlNode with the XmlNode.
        /// </param>
        /// <returns>The node.</returns>
        public static AbstractSavannahXmlNode ConvertXmlNode(XmlNode node, int indentSize, bool isRemoveSpace = true, Dictionary <XmlNode, AbstractSavannahXmlNode> table = null)
        {
            var hierarchy     = GetHierarchyFromParent(node);
            var commonXmlNode = new SavannahTagNode
            {
                TagName    = node.Name,
                InnerText  = ResolveInnerText(node, isRemoveSpace),
                Attributes = ConvertAttributeInfoArray(node.Attributes),
                ChildNodes = GetElements(node.ChildNodes, isRemoveSpace, indentSize, hierarchy, table)
            };

            table?.Add(node, commonXmlNode);
            ApplyInnerText(commonXmlNode);
            return(commonXmlNode);
        }
        public void WriteTest2()
        {
            var root = new SavannahTagNode
            {
                TagName    = "root",
                InnerText  = "aaaaa",
                ChildNodes = new[]
                {
                    new SavannahTextNode
                    {
                        InnerText = "bbbbb"
                    }
                }
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                InnerText  = "bbbbb",
                ChildNodes = new[]
                {
                    new SavannahTextNode
                    {
                        InnerText = "bbbbb"
                    }
                }
            };

            var writer = new SavannahXmlWriter("version=\"1.0\" encoding=\"UTF-8\"");

            using var ms = new MemoryStream();
            writer.Write(ms, root);
            ms.Seek(0, SeekOrigin.Begin);

            using var sr = new StreamReader(ms);
            var xml = sr.ReadToEnd();

            ms.Seek(0, SeekOrigin.Begin);

            var reader = new SavannahXmlReader(ms);
            var act    = reader.GetAllNodes();

            Assert.AreEqual(exp, act);
        }
        public void CommentTest()
        {
            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahCommentNode
                    {
                        InnerText = "Comment Test\nNew"
                    },
                    new SavannahTagNode
                    {
                        TagName    = "value",
                        InnerText  = "test",
                        Attributes = new []
                        {
                            new AttributeInfo
                            {
                                Name  = "attr",
                                Value = "value"
                            },
                            new AttributeInfo
                            {
                                Name  = "attr2",
                                Value = "value2"
                            }
                        },
                        ChildNodes = new []
                        {
                            new SavannahTextNode
                            {
                                InnerText = "test"
                            }
                        }
                    },
                }
            };

            var reader = new SavannahXmlReader(GetTestPath("Comment.xml"), false);
            var node   = reader.GetAllNodes();

            Assert.AreEqual(exp, node);
        }
        private static List <AbstractSavannahXmlNode> GetElements(XmlNodeList nodeList, bool isRemoveSpace, int indentSize, int hierarchy = 1, Dictionary <XmlNode, AbstractSavannahXmlNode> table = null)
        {
            var list = new List <AbstractSavannahXmlNode>();

            if (nodeList.Count <= 0)
            {
                return(list);
            }

            var space = indentSize * hierarchy;

            foreach (var n in nodeList)
            {
                if (n is XmlElement)
                {
                    var node          = (XmlElement)n;
                    var commonXmlNode = new SavannahTagNode
                    {
                        TagName    = node.Name,
                        InnerText  = ResolveInnerText(node, isRemoveSpace),
                        Attributes = ConvertAttributeInfoArray(node.Attributes)
                    };
                    if (node.ChildNodes.Count > 0)
                    {
                        commonXmlNode.ChildNodes = GetElements(node.ChildNodes, isRemoveSpace, indentSize, hierarchy + 1, table).ToArray();
                    }
                    list.Add(commonXmlNode);
                    table?.Add(node, commonXmlNode);
                }

                if (n is XmlCharacterData)
                {
                    var node          = (XmlCharacterData)n;
                    var commonXmlNode = ConvertXmlCharacterData(node, isRemoveSpace, space);
                    list.Add(commonXmlNode);
                    table?.Add(node, commonXmlNode);
                }
            }
            return(list);
        }
Exemple #17
0
        public void EqualsTest()
        {
            var commonXmlNode1 = SavannahTagNode.CreateRoot("root");

            commonXmlNode1.CreateChildElement("ChildNode", new AttributeInfo[]
            {
                new AttributeInfo
                {
                    Name  = "name",
                    Value = "attr"
                }
            }, "Value");

            var commonXmlNode2 = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "ChildNode",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "attr"
                            }
                        },
                        PrioritizeInnerXml = "Value"
                    }
                }
            };

            var value = commonXmlNode1.Equals(commonXmlNode2);

            Assert.AreEqual(true, value);
        }
Exemple #18
0
        public void OutterXmlTest()
        {
            var commonXmlNode2 = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "ChildNode",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "attr"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "Value"
                            }
                        }
                    }
                }
            };

            var exp = "<root>\n  <ChildNode name=\"attr\">\n    Value\n  </ChildNode>\n</root>";

            commonXmlNode2.ResolvePrioritizeInnerXml();
            var act = commonXmlNode2.ChildNodes.First().OutterXml;

            Assert.AreEqual(exp, act);
        }
Exemple #19
0
        public void PrioritizeInnerXmlCommentTest()
        {
            var root = new SavannahTagNode
            {
                TagName            = "root",
                PrioritizeInnerXml = "<!--\n  more\n  more2\n-->"
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new []
                {
                    new SavannahCommentNode
                    {
                        InnerText = "more\nmore2"
                    }
                }
            };

            root.ResolvePrioritizeInnerXml(false);

            Assert.AreEqual(exp, root);
        }
Exemple #20
0
        public void PrioritizeInnerXmlSpaceTest()
        {
            var root = new SavannahTagNode
            {
                TagName            = "root",
                PrioritizeInnerXml = "test\n  test2\ntest3"
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTextNode
                    {
                        InnerText = "test\n  test2\ntest3"
                    }
                }
            };

            root.ResolvePrioritizeInnerXml(false);

            Assert.AreEqual(exp, root);
        }
        public void SpecifyIndentTest()
        {
            var exp = new SavannahTagNode
            {
                TagName    = "ServerSettings",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerName"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = "My Game Host"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。"
                            }
                        },
                        InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。"
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerName2"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = "My Game Host"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。\n    test"
                            }
                        },
                        InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。\n    test"
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerDescription"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = "A 7 Days to Die server"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバーの説明を設定します。"
                            }
                        },
                        InnerText = "サーバーの説明を設定します。"
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerWebsiteURL"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = ""
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバーのウェブサイトを設定します。"
                            }
                        },
                        InnerText = "サーバーのウェブサイトを設定します。"
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "Nested"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTagNode
                            {
                                TagName    = "property",
                                Attributes = new AttributeInfo[]
                                {
                                    new AttributeInfo
                                    {
                                        Name  = "name",
                                        Value = "NestedElem"
                                    }
                                },
                                ChildNodes = new[]
                                {
                                    new SavannahTextNode
                                    {
                                        InnerText = "Value"
                                    }
                                },
                                InnerText = "Value"
                            }
                        }
                    }
                }
            };

            var reader = new SavannahXmlReader(GetTestPath("Test_four_indent.xml"))
            {
                IndentSize = 4
            };
            var node = reader.GetAllNodes();

            Assert.AreEqual(exp, node);
        }
Exemple #22
0
        public void PrioritizeInnerXmlTest()
        {
            var root = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTagNode
                    {
                        TagName            = "cov",
                        PrioritizeInnerXml = "<test>test<br />aaaa<br />bbb</test>"
                    },
                    new SavannahTextNode
                    {
                        InnerText = "value"
                    }
                }
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "cov",
                        ChildNodes = new []
                        {
                            new SavannahTagNode
                            {
                                TagName    = "test",
                                InnerText  = "test\naaaa\nbbb",
                                ChildNodes = new AbstractSavannahXmlNode[]
                                {
                                    new SavannahTextNode
                                    {
                                        InnerText = "test"
                                    },
                                    new SavannahTagNode
                                    {
                                        TagName = "br"
                                    },
                                    new SavannahTextNode
                                    {
                                        InnerText = "aaaa"
                                    },
                                    new SavannahTagNode
                                    {
                                        TagName = "br"
                                    },
                                    new SavannahTextNode
                                    {
                                        InnerText = "bbb"
                                    }
                                }
                            }
                        }
                    },
                    new SavannahTextNode
                    {
                        InnerText = "value"
                    }
                }
            };

            root.ResolvePrioritizeInnerXml();

            Assert.AreEqual(exp, root);
        }
 /// <summary>
 /// Writes the XML to the specified file.
 /// </summary>
 /// <param name="path">Path of the file to be written</param>
 /// <param name="root">The root of the XML to be written</param>
 public void Write(string path, SavannahTagNode root)
 {
     using var fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
     Write(fs, root);
 }
        public void WriteTest3()
        {
            var root = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        ChildNodes = new[]
                        {
                            new SavannahTagNode
                            {
                                TagName    = "test",
                                ChildNodes = new[]
                                {
                                    new SavannahTextNode
                                    {
                                        InnerText = "bbbbb\naaaaa\nccccc"
                                    }
                                }
                            }
                        }
                    },
                    new SavannahTagNode
                    {
                        TagName    = "vehicle",
                        ChildNodes = new AbstractSavannahXmlNode[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "bbbbb\naaaaa\nccccc"
                            },
                            new SavannahTagNode
                            {
                                TagName = "br",
                            }
                        }
                    }
                }
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        ChildNodes = new[]
                        {
                            new SavannahTagNode
                            {
                                TagName    = "test",
                                InnerText  = "bbbbb\naaaaa\nccccc",
                                ChildNodes = new[]
                                {
                                    new SavannahTextNode
                                    {
                                        InnerText = "bbbbb\naaaaa\nccccc"
                                    }
                                }
                            }
                        }
                    },
                    new SavannahTagNode
                    {
                        TagName    = "vehicle",
                        InnerText  = "bbbbb\naaaaa\nccccc",
                        ChildNodes = new AbstractSavannahXmlNode[]
                        {
                            new SavannahTextNode
                            {
                                InnerText = "bbbbb\naaaaa\nccccc"
                            },
                            new SavannahTagNode
                            {
                                TagName = "br",
                            }
                        }
                    }
                }
            };

            var writer = new SavannahXmlWriter("version=\"1.0\" encoding=\"UTF-8\"");

            using var ms = new MemoryStream();
            writer.Write(ms, root);
            ms.Seek(0, SeekOrigin.Begin);

            var reader = new SavannahXmlReader(ms);
            var act    = reader.GetAllNodes();

            Assert.AreEqual(exp, act);
        }
Exemple #25
0
        public void AddAfterChildTest()
        {
            var textNode = new SavannahTextNode
            {
                InnerText = "aaa"
            };
            var testNode = new SavannahTagNode
            {
                TagName    = "test",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "br",
                        Attributes = new List <AttributeInfo>
                        {
                            new AttributeInfo
                            {
                                Name  = "attr",
                                Value = "value"
                            }
                        }
                    },
                }
            };

            var root = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTagNode
                    {
                        TagName = "test"
                    },
                    textNode,
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        ChildNodes = new []
                        {
                            new SavannahTagNode
                            {
                                TagName = "br"
                            },
                        }
                    }
                }
            };

            var exp = new SavannahTagNode
            {
                TagName    = "root",
                ChildNodes = new AbstractSavannahXmlNode[]
                {
                    new SavannahTagNode
                    {
                        TagName = "test"
                    },
                    textNode,
                    testNode,
                    new SavannahTagNode
                    {
                        TagName    = "test",
                        ChildNodes = new []
                        {
                            new SavannahTagNode
                            {
                                TagName = "br"
                            },
                        }
                    }
                }
            };

            root.AddAfterChildElement(textNode, testNode);

            Assert.AreEqual(exp, root);
        }
        public void WriteTest()
        {
            var root = new SavannahTagNode
            {
                TagName    = "ServerSettings",
                ChildNodes = new[]
                {
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerName"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = "My Game Host"
                            }
                        },
                        ChildNodes = new []
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。"
                            }
                        }
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerName2"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = "My Game Host"
                            }
                        },
                        ChildNodes = new []
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバー名を設定します。サーバーリストにはこの名前で表示されます。\n    test"
                            }
                        }
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerDescription"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = "A 7 Days to Die server"
                            }
                        },
                        ChildNodes = new []
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバーの説明を設定します。"
                            }
                        }
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "ServerWebsiteURL"
                            },
                            new AttributeInfo
                            {
                                Name  = "value",
                                Value = ""
                            }
                        },
                        ChildNodes = new []
                        {
                            new SavannahTextNode
                            {
                                InnerText = "サーバーのウェブサイトを設定します。"
                            }
                        }
                    },
                    new SavannahTagNode
                    {
                        TagName    = "property",
                        Attributes = new AttributeInfo[]
                        {
                            new AttributeInfo
                            {
                                Name  = "name",
                                Value = "Nested"
                            }
                        },
                        ChildNodes = new[]
                        {
                            new SavannahTagNode
                            {
                                TagName    = "property",
                                Attributes = new AttributeInfo[]
                                {
                                    new AttributeInfo
                                    {
                                        Name  = "name",
                                        Value = "NestedElem"
                                    }
                                },
                                ChildNodes = new []
                                {
                                    new SavannahTextNode
                                    {
                                        InnerText = "Value"
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var exp = File.ReadAllText(CommonXmlReaderTest.GetTestPath()).UnifiedBreakLine();

            var writer = new SavannahXmlWriter("version=\"1.0\" encoding=\"UTF-8\"");

            using var ms = new MemoryStream();
            writer.Write(ms, root);
            ms.Seek(0, SeekOrigin.Begin);

            using var sr = new StreamReader(ms);
            var xml = sr.ReadToEnd().UnifiedBreakLine();

            Assert.AreEqual(exp, xml);
        }