Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

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

Запись от 8Observer8 размещена 13.08.2019 в 17:20
Показов 1490 Комментарии 0
Метки c#, typescript, xml, xpath

Содержание блога

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
Метки c#, typescript, xml, xpath
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru