示例#1
0
        public void CreationTest()
        {
            var x = new XMLEntity("test");

            Assert.AreEqual("test", x.XName);
            Assert.AreEqual(0, x.Attributes.Count);
            Assert.AreEqual(0, x.Children.Count);
            Assert.AreEqual(null, x.Value);

            // externes setzen
            x.SetAttribute("test-attr1", "test-attr1-val");
            Assert.IsTrue(x.Attributes.Count == 1);
            Assert.IsTrue(x.Attributes.ContainsKey("test-attr1"));
            Assert.AreEqual("test-attr1-val", x.Attributes["test-attr1"]);
            Assert.AreEqual("test-attr1-val", x.GetAttribute <string>("test-attr1"));

            // internes setzen
            Assert.AreEqual(null, x.GetAttribute <string>("test-attr2"));
            Assert.AreEqual(0, x.GetAttribute <int>("test-attr2"));
            x.Attributes["test-attr2"] = "2";
            Assert.AreEqual("2", x.GetAttribute <string>("test-attr2"));
            Assert.AreEqual(2, x.GetAttribute <int>("test-attr2"));

            // externes Löschen
            x.RemoveAttribute("test-attr1");
            Assert.AreEqual(null, x.GetAttribute <string>("test-attr1"));
            Assert.IsFalse(x.Attributes.ContainsKey("test-attr1"));

            // internes Löschen
            x.Attributes.Remove("test-attr2");
            Assert.AreEqual(0, x.GetAttribute <int>("test-attr2"));

            // Value
            x.Value = "testval";
            Assert.AreEqual("testval", x.Value);

            // Children (simple)
            var x2 = new XMLEntity("c");

            x.Children.Add(x2);
            Assert.AreEqual(1, x.Children.Count);
            Assert.AreEqual("c", x.Children[0].XName);
            x.Children.RemoveAt(0);
            Assert.AreEqual(0, x.Children.Count);
        }
示例#2
0
        private void ProcessEntity(XMLEntity node)
        {
            if (attrsNames.TryGetValue(node.XName, out var localAttrsNames))
            {
                foreach (var attr in localAttrsNames)
                {
                    node.RemoveAttribute(attr);
                }
            }

            IEnumerable <string> removeNodeNames = nodeNames[""];

            if (nodeNames.TryGetValue(node.XName, out var localNodeNames))
            {
                removeNodeNames = removeNodeNames.Concat(localNodeNames);
            }
            node.Children.RemoveAll(x => removeNodeNames.Contains(x.XName));

            foreach (var ch in node.Children)
            {
                ProcessEntity(ch);
            }
        }