Форум программистов, компьютерный форум, киберфорум
Наши страницы
8Observer8
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 2.

Примеры в песочнице с XPath на TypeScript, и на C#

Запись от 8Observer8 размещена 13.08.2019 в 17:20

XPath - это язык запросов для извлечения требуемой информации из XML файлов. Так как я работаю на C# и на TypeScript, то мне важно, чтобы код для извлечения данных из XML был похож, чтобы не тратить время на разные подходы. XML используется для хранения 3D моделей и анимаций (в том числе скелетной) в формате .dae, а также для хранения шрифтов конвертированных из TrueType (см. Bitmap Font Generator), которые можно использовать для вывода текста в OpenGL и WebGL. Metanit в своём уроке по C# и XPath показал примеры, которые я перепишу на TypeScript.

XML файл, над которым будет производиться работа:

Users.xml

XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8" ?>
<users>
  <user name="Bill Gates">
    <company>Microsoft</company>
    <age>48</age>
  </user>
  <user name="Larry Page">
    <company>Google</company>
    <age>42</age>
  </user>
</users>
Список независимых друг от друга примеров на TypeScript и C#:
  1. Вывод содержимого узлов

    Запустить в песочнице
    Javascript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    let nodes = xmlDoc.evaluate("/users/user", xmlDoc, null, XPathResult.ANY_TYPE, null);
    let result = nodes.iterateNext();
     
    // 01. Print all child nodes
    while (result)
    {
        Output.Instance.Print(result.textContent);
        result = nodes.iterateNext();
    }
    Цитата:
    Microsoft 48
    Google 42
    C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
            static void Main(string[] args)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("XmlFiles/Users.xml");
                XmlElement xRoot = xmlDoc.DocumentElement;
     
                // 01. Print all child nodes
                XmlNodeList childNodes = xRoot.SelectNodes("*");
                foreach (XmlNode node in childNodes)
                {
                    Console.WriteLine(node.OuterXml);
                }
     
                // Delay
                Console.ReadKey();
            }
    Цитата:
    <user name="Bill Gates"><company>Microsoft</company><age>48</age></user>
    <user name="Larry Page"><company>Google</company><age>42</age></user>
  2. Вывод названий всех компаний

    Запустить в песочнице

    Javascript
    1
    2
    3
    4
    5
    6
    7
    8
    
    let nodes = xmlDoc.evaluate("/users/user/company", xmlDoc, null, XPathResult.ANY_TYPE, null);
    let result: Node = null;
     
    // 002. Print all company names
    while (result = nodes.iterateNext())
    {
        Output.Instance.Print(result.childNodes[0].nodeValue);
    }
    Цитата:
    Microsoft
    Google
  3. Вывод всех имён людей из атрибутов

    Запустить в песочнице.

    Javascript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    // 003. Print all user names from attributes
    let path = "/users/user";
    let userNodes = xmlDoc.evaluate(path, xmlDoc, null, XPathResult.ANY_TYPE, null);
    let currentUserNode: Node = null;
    while (currentUserNode = userNodes.iterateNext())
    {
        let nameAttributeNodes = xmlDoc.evaluate("@name", currentUserNode, null, XPathResult.ANY_TYPE, null);
        let currentNameAttributeNode = nameAttributeNodes.iterateNext();
        Output.Instance.Print(currentNameAttributeNode.nodeValue);
    }
    Цитата:
    Bill Gates
    Larry Page
Размещено в Без категории
Просмотров 84 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru