Си диез / Говнокод #26203 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Barch, (Updated )

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

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

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

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

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

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

      string openedTag2 = "<" + tagName + ">";
      string closedTag2 = "</" + tagName + ">";

      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;Генри.
            Ответить
                  • > Это запись пробелов (amp)
                    > Серьёзно увлекаюсь компьютерами и всем что с ними связано
                    Ответить
                    • >> при неудачной организации вывода текста программистом сайта или неверной обработке кода браузером

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

      }
      Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8