C# XPath: Константы или магические строки?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

А как лучше записать Xpath выражения, которые я использую при парсинге XML файла: выделить их в константы или записывать непосредственно при Xpath методов?

Я пошел первым путем, получилось так:

public static class TpmlParser
    {
       <b>private const string XML_TESTPLAN_HEAD_PAHT = "/tpml/testplan/head";</b>

public static bool Parse(string tpmlFileName)
        {
			// Skip, skip, skip
            using (TextReader reader = File.OpenText(tpmlFileName))
            {
                XmlDocument tpmlDocument = new XmlDocument();
                tpmlDocument.Load(reader);
                tpmlDocument.SelectSingleNode(<b>XML_TESTPLAN_HEAD_PAHT</b>);

}
			// Skip, skip, skip
        }

}

А ведь можно и так:

public static class TpmlParser
    {
        public static bool Parse(string tpmlFileName)
        {
			// Skip, skip, skip
            using (TextReader reader = File.OpenText(tpmlFileName))
            {
                XmlDocument tpmlDocument = new XmlDocument();
                tpmlDocument.Load(reader);
                tpmlDocument.SelectSingleNode(<b>"/tpml/testplan/head"</b>);

}
			// Skip, skip, skip
        }
    }

За одно хочу спросить, как кто регулярные выражения: константами или прямо в при вызове методов поиска/замены.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Действительно, LINQ to XML работает быстрее, чем XPath.

Спасибо, sashaeve.
Я никогда не замерял скорость работы LINQ to XML, и почему-то был уверен что он работает медленнее чем Xpath. Оказалось, все наоборот;)

Хотя... еще попробую на своей машине:)

Зашью в его в метод все таки.

C LINQ to XML красиво получается, но в моем случае, я использую очень простые Xpath запросы, и думаю что использовать LINQ это как по комарам из пушек;), но вот при более сложных запросах, LINQ защищает от опечаток в строке и делает код более читабельным (и коротким).

По-моему все просто... Если твое выражение нигде больше не используется, тогда его можно смело зашивать в метод, если используется, тогда в выносить куда-нибудь. Хотя хранить все выражения в одном месте тоже хорошая идея... А вообще я бы посоветовал использовать LINQ вместо стандартного императивного подхода:)

Підписатись на коментарі