1. C# / Говнокод #26203

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    public static XmlNode FindNodeRecursive(XmlNode document, string nodeName)
    {
        if (document.Name == nodeName)
            return document;
    
        foreach (XmlNode node in document.ChildNodes)
        {
            if (node.Name == nodeName)
                return node;
    
            XmlNode resNode = FindNodeRecursive(node, nodeName);
            if (resNode != null && resNode.Name == nodeName)
                return resNode;
        }
    
        return (XmlNode)null;
    }
    <...>
     XmlDocument document = new XmlDocument();
     document.LoadXml(request);
    
    var PurchaseIdNode = XmlProcessing.FindNodeRecursive(document, "PurchaseId");

    Разработчик с 15-летним стажем
    XPath'у не доверяет

    Запостил: Barch, 12 Декабря 2019

    Комментарии (35) RSS

    • Не знает про него, вероятно.

      Программисты вообще любят изучать что-то одно, и дальше своих шор никуда не выглядывать.

      Ну хорошо хоть дом, а не регулярки
      Ответить
      • Там есть и регулярки! Для стринговых параметров, я только начал "накладывать"...

        В том же файле использует XDocument....
        Ответить
      • public static string GetTagContent(string xml, string tagName)
        {
        string tagContent = "";

        string openedTag1 = "<" + tagName + ">";
        string closedTag1 = "</" + tagName + ">";

        string openedTag2 = "&lt;" + tagName + "&gt;";
        string closedTag2 = "&lt;/" + tagName + "&gt;";

        List<string> tagList = new List<string>();

        // Извлечение tagContent между тегами openedTag1 и closedTag1
        foreach (Match match in Regex.Matches(xml, openedTag1 + @"([\s\S]*?)" + closedTag1))
        tagList.Add(match.Groups[1].Value);

        if (tagList.Count > 0)
        {
        tagContent = tagList[0];
        }
        else
        {
        foreach (Match match in Regex.Matches(xml, openedTag2 + @"([\s\S]*?)" + closedTag2))
        tagList.Add(match.Groups[1].Value);

        if (tagList.Count > 0)
        {
        tagContent = tagList[0];
        }
        }

        return tagContent;
        }
        Ответить
        • Этот код ещё умеет извлекать тэги из текста, в котором < и > заэкранированы? Но для чего?
          Ответить
          • А ВДРУГ???
            Ответить
          • Ну вдруг там PHPшник ходил? Они обычно все экранируют на всякий случай, XSS же, то, сё...
            Ответить
            • Представляю, как будет выглядеть сайт, посвящённый писателю О\\\\\&apos;Генри.
              Ответить
              • "Прощайте, капитан О\\\\\&apos;Генри." :)


                но может быть и будет хакер пойман
                https://www.youtube.com/watch?v=r1G-qK4AbUU&feature=youtu.be&t=448
                Ответить
                • О\\\\\&amp;amp;amp;amp;apos;Генри
                  Ответить
                  • Именно поэтому я за &amp;amp;amp;amp;quot;PHP&amp;amp;amp;am p;quot;

                    https://yandex.ru/znatoki/question/computers/chto_takoe_amp_amp_amp_amp_amp_quot_a2e4b393/
                    Ответить
                    • > Это запись пробелов (amp)
                      > Серьёзно увлекаюсь компьютерами и всем что с ними связано
                      Ответить
                      • >> при неудачной организации вывода текста программистом сайта или неверной обработке кода браузером

                        Не могу сходу придумать ситуацию, когда &amp;quot; может появиться из-за неверной обработки кода браузером. Разве что попытаться найти браузер, который не поддерживает entities. Но какой? Mosaic 1.0? Мне почему-то кажется, что &amp; и &quot; были в HTML с самого начала.
                        Ответить
                        • Меня это тоже позабавило. Разве что этот браузер: http://govnokod.ru/25789
                          Но ситуацию, что бы браузер не просто выплюнул &amp;, но еще и размножил, я представить не могу даже в героиновых фантазиях.
                          Ответить
                        • Мой код все время неверно обрабатывается браузером
                          Я пишу аккуратно и без багов, а получается говно
                          Ответить
                        • Кстати, раз браузеры уже сами закрывают незакрытые теги, могли бы начать угадывать, сколько раз нужно анескейпить символ, что бы получить то, что было задумано.
                          Всё для удобства шаблонизаторщиков.
                          Ответить
                    • amp amp amp amp
                      я не ревную тебя
                      amp amp amp amp
                      обиды нет
                      Ответить
                  • O\\\\\\&amp;amp;amp;amp;apos;Henry"
                    Ответить
      • ОН ЗНАЕТ ПРО XPATH!!!

        public static string InsertDefaultValues(string xml)
        {
        if (string.IsNullOrEmpty(xml))
        return xml;

        try
        {
        var doc = XDocument.Parse(xml);

        foreach (var element in doc.Root.XPathSelectElements(@"//*[@DefaultValue]"))
        {
        try
        {
        if (element.Value == "")
        element.Value = element.Attribute("DefaultValue").Value;
        }
        catch (Exception ex)
        {
        //writeTOAppLog(ex);
        }
        }

        return doc.ToString(SaveOptions.DisableFormatti ng);
        }
        catch (Exception ex)
        {
        //writeTOAppLog(ex);
        return xml;
        }

        }
        Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • КАКОЙ БАГОР
      Ответить
    • Гоняет их по небу хуета.
      Ответить
    • https://twitter.com/cgtnrussian/status/1205487953415303169
      питух-виртуоз!

      стертор гниль
      Ответить
      • Какой скилл )))
        Ответить
      • Приведи реальный пример, когда тебе пригодилось умение играть на фортепиано.
        Ответить

    Добавить комментарий