예제 #1
0
 public void XmlNavigator_SelectScalar_WithoutXmlPath_ExpectException()
 {
     using (var JsonNavigator = new XmlNavigator(TestData))
     {
         JsonNavigator.SelectScalar(new JsonPath());
     }
 }
예제 #2
0
        public INavigator CreateNavigator(object data, Type pathType)
        {
            if (!pathType.GetInterfaces().Contains(typeof(IPath)))
            {
                throw new Exception("'" + pathType + "' doesn't implement '" + typeof(IPath) + "'");
            }

            INavigator navigator;

            if (pathType == typeof(XmlPath))
            {
                navigator = new XmlNavigator(data);
            }
            else if (pathType == typeof(JsonPath))
            {
                navigator = new JsonNavigator(data);
            }
            else if (pathType == typeof(PocoPath))
            {
                navigator = new PocoNavigator(data);
            }
            else
            {
                navigator = null;
            }

            return(navigator);
        }
예제 #3
0
 public void XmlNavigator_SelectScalarValue_WithNull_Expected_ArgumentNullException()
 {
     using (var xmlNavigator = new XmlNavigator(TestData))
     {
         xmlNavigator.SelectScalar(null);
     }
 }
예제 #4
0
 public void XmlNavigator_SelectEnumerableValue_WithoutXmlPath_Expected_Exception()
 {
     using (var xmlNavigator = new XmlNavigator(TestData))
     {
         xmlNavigator.SelectEnumerable(new JsonPath());
     }
 }
예제 #5
0
        public void TestParse3()
        {
            string xml = @"
<root>
 <person id='1'>
  <name>masuda</name>
  <age>44</age>
 </person>
 <person id='2'>
  <name>yamada</name>
  <age>20</age>
 </person>
 <person id='3'>
  <name>tanaka</name>
  <age>10</age>
 </person>
</root>";
            var    doc = new XmlDocument(xml);
            var    q   = new XmlNavigator(doc)
                         .Where(n => n.Attrs["id"] == "2")
                         .FirstOrDefault();

            Assert.AreEqual("person", q.TagName);
            // ExDoc記述
            Assert.AreEqual("yamada", q / "name");
            Assert.AreEqual("20", q / "age");
        }
예제 #6
0
        public void TestNormal6()
        {
            var root = new XmlNode("root")
                       .Node("person").AddAttr("id", "1")
                       .AddNode("name", "masuda")
                       .AddNode("age", "44")
                       .Parent
                       .Node("person").AddAttr("id", "2")
                       .AddNode("name", "yamada")
                       .AddNode("age", "20")
                       .Parent
                       .Node("person").AddAttr("id", "3")
                       .AddNode("name", "tanaka")
                       .AddNode("age", "10")
                       .Root;

            // クエリメソッドを使う
            var xn = new XmlNavigator(root)
                     .Where(n => n % "id" == "2")
                     .FirstOrDefault();

            Assert.AreEqual("person", xn.TagName);
            // ExDoc記述
            Assert.AreEqual("yamada", xn / "name");
            Assert.AreEqual("20", xn / "age");
        }
예제 #7
0
        public void TestNormal3()
        {
            var root = new XmlNode("root")
                       .Node("person").AddAttr("id", "1")
                       .AddNode("name", "masuda")
                       .AddNode("age", "44")
                       .Parent
                       .Node("person").AddAttr("id", "2")
                       .AddNode("name", "yamada")
                       .AddNode("age", "20")
                       .Parent
                       .Node("person").AddAttr("id", "3")
                       .AddNode("name", "tanaka")
                       .AddNode("age", "10")
                       .Root;

            // タグが検索できた場合
            var q = new XmlNavigator(root)
                    .Where(n => n.Attrs["id"] == "2")
                    .FirstOrDefault();

            Assert.AreEqual("person", q.TagName);
            // ExDoc記述
            Assert.AreEqual("yamada", q / "name");
            Assert.AreEqual("20", q / "age");
        }
예제 #8
0
 public void TestParse3()
 {
     string xml = @"
     <root>
      <person id='1'>
       <name>masuda</name>
       <age>44</age>
      </person>
      <person id='2'>
       <name>yamada</name>
       <age>20</age>
      </person>
      <person id='3'>
       <name>tanaka</name>
       <age>10</age>
      </person>
     </root>";
     var doc = new XmlDocument(xml);
     var q = new XmlNavigator(doc)
         .Where(n => n.Attrs["id"] == "2")
         .FirstOrDefault();
     Assert.AreEqual("person", q.TagName);
     // ExDoc記述
     Assert.AreEqual("yamada", q / "name");
     Assert.AreEqual("20", q / "age");
 }
예제 #9
0
 public void XmlNavigator_SelectEnumerableValueUsingNull_Expected_ArgumentNullException()
 {
     using (var xmlNavigator = new XmlNavigator(TestData))
     {
         xmlNavigator.SelectEnumerable(null);
     }
 }
예제 #10
0
        public void SelectScalarValue_WithWrongPathSegment_Expected_NoValue()
        {
            IPath namePath = new XmlPath("Company.Nogo", "Company.Nogo");

            var xmlNavigator = new XmlNavigator(testData);

            var actual = xmlNavigator.SelectScalar(namePath).ToString();

            Assert.AreEqual(string.Empty, actual);
        }
예제 #11
0
        public void TestParse1()
        {
            string xml = "<root><name>masuda tomoaki</name></root>";
            var doc = new XmlDocument(xml);

            var q = new XmlNavigator(doc)
                .Where(n => n.TagName == "name")
                .FirstOrDefault();

            Assert.AreEqual("masuda tomoaki", q.Value);
        }
예제 #12
0
        public void SelectScalarValue_WithScalarPathFromXml_WherePathMapsToAnAttribute_Expected_ScalarValue()
        {
            IPath namePath = new XmlPath("Company:Name", "Company:Name");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = xmlNavigator.SelectScalar(namePath).ToString();
            const string expected = "Dev2";

            Assert.AreEqual(expected, actual);
        }
예제 #13
0
        public void SelectEnumerableValuesUsingEnumerablePathFromXml_WherePathMapsThroughNestedEnumerablesScenario2_Expected_EnumerableValue()
        {
            IPath path = new XmlPath("Company().OuterNestedRecordSet().InnerNestedRecordSet:ItemValue", "Company.OuterNestedRecordSet.InnerNestedRecordSet:ItemValue");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
            const string expected = "val1|val2|val3|val4";

            Assert.AreEqual(expected, actual);
        }
예제 #14
0
        public void SelectEnumerableValuesUsingEnumerablePathFromXml_WherePathMapsToANode_Expected_EnumerableValue()
        {
            IPath path = new XmlPath("Company().InlineRecordSet", "Company.InlineRecordSet");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
            const string expected = "RandomData|RandomData1";

            Assert.AreEqual(expected, actual);
        }
예제 #15
0
        public void SelectScalarValue_WithEnumerablePathFromXml_WherePathMapsToANode_Expected_ScalarValue()
        {
            IPath namePath = new XmlPath("Company().InlineRecordSet", "Company.InlineRecordSet");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = xmlNavigator.SelectScalar(namePath).ToString().Trim();
            const string expected = "RandomData1";

            Assert.AreEqual(expected, actual);
        }
예제 #16
0
    public void XmlSerializationTest()
    {
        var tsltn = new TsltnFile()
        {
            SourceLanguage     = "de",
            TargetLanguage     = "en",
            SourceDocumentPath = TestFiles.TestXmlPath
        };

        const string SUMMARY = "summary";


        var navigator = XmlNavigator.Load(tsltn.SourceDocumentPath);

        tsltn.SetTranslation(navigator !.GetNodeID(new XElement(SUMMARY, "Hello Car")), "Hallo Auto");

        var auto2 = new XElement(SUMMARY, "Car 2");

        tsltn.SetTranslation(navigator.GetNodeID(auto2), "Auto 2");

        var parent1 = new XElement("Node1", "Hi Manual");

        tsltn.SetTranslation(navigator.GetNodeID(parent1), "Hallo Manual");

        var parent2 = new XElement("Node2", "Manual 2");

        tsltn.SetTranslation(navigator.GetNodeID(parent2), "manuell 2");


        var sb = new StringBuilder();

        var serializer = new XmlSerializer(typeof(TsltnFile));

        using (var writer = new StringWriter(sb))
        {
            serializer.Serialize(writer, tsltn);
        }

        string s = sb.ToString();

        using var reader = new StringReader(s);

        var tsltn2 = (TsltnFile)serializer.Deserialize(reader);


        Assert.AreEqual("de", tsltn2.SourceLanguage);
        Assert.AreEqual("en", tsltn2.TargetLanguage);

        Assert.IsTrue(tsltn.TryGetTranslation(navigator.GetNodeID(auto2), out string?transl));
        Assert.AreEqual("Auto 2", transl);

        Assert.IsTrue(tsltn.TryGetTranslation(navigator.GetNodeID(parent2), out string?result));
        Assert.AreEqual("manuell 2", result);
    }
예제 #17
0
        public void SelectEnumerableValueUsingScalarPathFromXmlWithASingleNode_WherePathMapsToANode_Expected_ScalarValue()
        {
            IPath namePath = new XmlPath("Message", "Message");

            var xmlNavigator = new XmlNavigator(GivenSingleNode);

            var          actual   = xmlNavigator.SelectEnumerable(namePath);
            const string expected = "Dummy Data";

            Assert.IsTrue(actual.Contains(expected));
        }
예제 #18
0
        public void SelectScalarValue_WithEnumerablePathFromXml_WherePathMapsToAnAttribute_Expected_ScalarValue()
        {
            IPath namePath = new XmlPath("Company.Departments().Department.Employees().Person:Name", "Company.Departments.Department.Employees.Person:Name");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = xmlNavigator.SelectScalar(namePath).ToString();
            const string expected = "Joe";

            Assert.AreEqual(expected, actual);
        }
예제 #19
0
        public void TestParse1()
        {
            string xml = "<root><name>masuda tomoaki</name></root>";
            var    doc = new XmlDocument(xml);

            var q = new XmlNavigator(doc)
                    .Where(n => n.TagName == "name")
                    .FirstOrDefault();

            Assert.AreEqual("masuda tomoaki", q.Value);
        }
예제 #20
0
        public void SelectEnumerableValuesUsingEnumerablePathFromXml_WherePathMapsThroughNestedEnumerablesScenario1_Expected_EnumerableValue()
        {
            IPath path = new XmlPath("Company.Departments().Department.Employees().Person:Name", "Company.Departments.Department.Employees.Person:Name");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
            const string expected = "Brendon|Jayd|Bob|Joe";

            Assert.AreEqual(expected, actual);
        }
예제 #21
0
        public void SelectEnumerableValuesUsingScalarPathFromXml_WherePathMapsToAnAttribute_Expected_EnumerableValue()
        {
            IPath path = new XmlPath("Company:Name", "Company:Name");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
            const string expected = "Dev2";

            Assert.AreEqual(expected, actual);
        }
예제 #22
0
        public void SelectScalarValue_WithScalarPathFromXmlWithASingleNode_WherePathMapsToANode_Expected_ScalarValue()
        {
            IPath namePath = new XmlPath("Message", "Message");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = xmlNavigator.SelectScalar(namePath).ToString();
            const string expected = "Dummy Data";

            Assert.AreEqual(expected, actual);
        }
예제 #23
0
        public void SelectScalarValue_WithScalarPathFromXml_WherePathMapsToANode_Expected_ScalarValue()
        {
            IPath namePath = new XmlPath("Company.Motto", "Company.Motto");

            var xmlNavigator = new XmlNavigator(testData);

            var          actual   = xmlNavigator.SelectScalar(namePath).ToString();
            const string expected = "Eat lots of cake";

            Assert.AreEqual(expected, actual);
        }
예제 #24
0
        public void XmlNavigator_SelectEnumerableValuesUsingScalarPathFromXml_WherePathMapsToANode_Expected_EnumerableValue()
        {
            IPath path = new XmlPath("Company.Motto", "Company.Motto");

            using (var xmlNavigator = new XmlNavigator(TestData))
            {
                var          actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
                const string expected = "Eat lots of cake";

                Assert.AreEqual(expected, actual);
            }
        }
예제 #25
0
        public void XmlNavigator_SelectEnumerableValuesUsingEnumerablePathFromXml_WherePathMapsToAnAttribute_Expected_EnumerableValue()
        {
            IPath path = new XmlPath("Company.Departments().Department:Name", "Company.Departments.Department:Name");

            using (var xmlNavigator = new XmlNavigator(TestData))
            {
                var          actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
                const string expected = "Dev|Accounts";

                Assert.AreEqual(expected, actual);
            }
        }
예제 #26
0
        public void SelectScalarValueUsingScalarPathFromXml_WherePathMapsToAnAttribute_Expected_ScalarValue()
        {
            string testData = Given();

            IPath namePath = new XmlPath("Company:Name", "Company:Name");

            XmlNavigator xmlNavigator = new XmlNavigator(testData);

            string actual   = xmlNavigator.SelectScalar(namePath).ToString();
            string expected = "Dev2";

            Assert.AreEqual(expected, actual);
        }
예제 #27
0
        public void SelectEnumerableValuesUsingScalarPathFromXml_WherePathMapsToANode_Expected_EnumerableValue()
        {
            string testData = Given();

            IPath path = new XmlPath("Company.Motto", "Company.Motto");

            XmlNavigator xmlNavigator = new XmlNavigator(testData);

            string actual   = string.Join("|", xmlNavigator.SelectEnumerable(path).Select(o => o.ToString().Trim()));
            string expected = "Eat lots of cake";

            Assert.AreEqual(expected, actual);
        }
예제 #28
0
        public void SelectEnumerableValueUsingScalarPathFromXmlWithASingleNode_WherePathMapsToANode_Expected_ScalarValue()
        {
            string testData = GivenSingleNode();

            IPath namePath = new XmlPath("Message", "Message");

            XmlNavigator xmlNavigator = new XmlNavigator(testData);

            IEnumerable <object> actual = xmlNavigator.SelectEnumerable(namePath);
            string expected             = "Dummy Data";

            Assert.IsTrue(actual.Contains(expected));
        }
예제 #29
0
파일: Node.cs 프로젝트: FolkerKinzel/Tsltn
    private Node(XElement el, ITranslation transl, XmlNavigator navigator, Node?firstNode)
    {
        _nav       = navigator;
        _firstNode = firstNode ?? this;
        _xElement  = el;
        _transl    = transl;

        // Das Replacement des geschützten Leerzeichens soll beim Hashen
        // ignoriert werden:
        ID            = _nav.GetNodeID(el, out _innerXml, out _nodePath);
        _innerXml     = XmlFragmentBeautifier.Beautify(_innerXml);
        HasAncestor   = !Equals(_firstNode);
        HasDescendant = _nav.GetNextXElement(el) != null;
    }
예제 #30
0
        public void SelectEnumerableValuesAsRelatedUsingScalarPathFromXmlWithASingleNode_WherePathMapsToANode_Expected_ScalarValue()
        {
            IPath         namePath = new XmlPath("Message", "Message");
            IList <IPath> paths    = new List <IPath>();

            paths.Add(namePath);


            var          xmlNavigator = new XmlNavigator(GivenSingleNode);
            var          actual       = xmlNavigator.SelectEnumerablesAsRelated(paths);
            const string expected     = "Dummy Data";

            Assert.IsTrue(actual[namePath].Contains(expected));
        }
예제 #31
0
        public void SelectEnumerableValuesAsRelatedUsingEnumerablePathFromXmlFromFoPrimitiveType()
        {
            var xmlDocument = new XmlDocument();

            xmlDocument.LoadXml("<boolean xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">false</boolean>");
            var testData     = Scrubber.Scrub(xmlDocument.InnerXml);
            var xmlMapper    = new XmlMapper();
            var paths        = xmlMapper.Map(testData).ToList();
            var path         = paths.FirstOrDefault();
            var xmlNavigator = new XmlNavigator(testData);
            var dat2         = xmlNavigator.SelectScalar(path);

            Assert.AreEqual("false", dat2);
        }
예제 #32
0
        public void XmlNavigator_SelectEnumerableValuesAsRelated_UsingScalarPathFrom_Valid_SOAPXml_WherePathMapsToANode_Expected_ScalarValue1()
        {
            IPath         namePath = new XmlPath("Envelope.Body.LoginResponse.LoginResult.CookieName", "Envelope.Body.LoginResponse.LoginResult.CookieName");
            IList <IPath> paths    = new List <IPath>
            {
                namePath
            };

            using (var xmlNavigator = new XmlNavigator(GivenSoapWithManyNamespaces))
            {
                var actual = xmlNavigator.SelectEnumerablesAsRelated(paths);

                Assert.IsTrue(actual[namePath].Contains("FedAuth"));
            }
        }
예제 #33
0
        public void TestParse2()
        {
            string xml = @"
            <root>
             <name>masuda</name>
             <name>yamada</name>
             <name>yamasaki</name>
            </root>";
            var doc = new XmlDocument(xml);
            var q = new XmlNavigator(doc)
                .Where(n => n.TagName == "name")
                ;

            Assert.AreEqual(3, q.Count());
            Assert.AreEqual("masuda", q.First().Value);
        }