• Как десериализировать xml элемент, как массив?

    D1m0nd
    @D1m0nd Автор вопроса
    junior C# developer
    [XmlElement(ElementName = "return", Namespace="")]
        public List<Return> Return { get; set; }


    необходимо явным образом указать Namespace, если он не совпадает с рутовым элементом
    источник
    https://ru.stackoverflow.com/questions/1465543/%d0...
    Ответ написан
    Комментировать
  • Swift Playground, поможет ли в обучении Swift?

    D1m0nd
    @D1m0nd
    junior C# developer
    Кто-то может пробовал так учиться ? стоит тратить время?

    Стоит делать свой проект параллельно изучению , где ты будешь черпать инфу не важно, главное что бы ты смог применить знания . которые приобрел, а задрочка книг и курсов , а также выполнение примеров из них ничего не даст от слова совсем, если ты не делаешь на основе их что то свое

    Я сам немного путаюсь вообще с чего начинать, можете подсказать что вы учили первым? UI или синтаксис?

    -_-
    чеее ка
    Ответ написан
    Комментировать
  • Как возможно исправить ошибку Невозможно разрешить удаленное имя: >?

    D1m0nd
    @D1m0nd Автор вопроса
    junior C# developer
    Может у вас мой случай
    1. Проверьте настройки днс сервера, у меня основной днс сервер был проблемный, я указал основной как альтернативный, альтернатива была 1.1.1.1 по нему подклчюение шло нормально
    если хотите проверить это то напишите
    nslookup <Адрес сайта к которому не можете подключиться> <адрес вашего днс сервера,основной или альтернативный>
    пример
    nslookup fb.com 1.1.1.1
    Если у вас один тру другой рантайм, то ищите проблему в вашем днс сервере, я не парился и указал альтернативный , как основной, потому ситуация позволяла
    иначе пробуйте шаг два
    2. узнайте адрес хоста
    сделайте запрос к нему или включите эту надстройку
    3. также вас может не пускать из-за протокола попробуйте поменять с http на https и наоборот, так тоже может сработать
    Ответ написан
    Комментировать
  • Как в HtmlAgilityPack правильно использовать .SelectNodes(path);, когда я применяю его, но меняет моим элементам классы?

    D1m0nd
    @D1m0nd Автор вопроса
    junior C# developer
    Крч я начал использовать физлер и все стало норм
    пример
    вас интересует строка с Счет-фактура, остальное забейте
    обработку null я не ставил, так как это только тестовый пример

    Если используете физлер хтмл агилити пак 1.2.0, как я, то установиет физлер 1.3.0, с версиями ниже будет выдавать ошибку
    static void Main(string[] args)
            {
                var fileInfo = new FileInfo(PATH);
                string fullFilePath = fileInfo.FullName;
                string htmlText = string.Empty;
                try
                {
                    htmlText = ParseDOCX(fileInfo);
                }
                catch (OpenXmlPackageException e)
                {
                    if (e.ToString().Contains("Invalid Hyperlink"))
                    {
                        using (FileStream fs = new FileStream(fullFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                        {
                            UriFixer.FixInvalidUri(fs, brokenUri => FixUri(brokenUri));
                        }
                        htmlText = ParseDOCX(fileInfo);
                    }
                }
    
                if (htmlText.IndexOf("Счет-фактура") != -1)
                {
                    var html = new HtmlAgilityPack.HtmlDocument();
                    html.LoadHtml(htmlText);
                    var document = html.DocumentNode;
                    //ищем таблицу с счет фактурой
                    var node = searchNode(document, "Счет-фактура", "div");
                    //вставляем класс table что бы ее перевернуть
                    insertClass(node, "table", "table", "Сумма", true);
                    node = searchNode(node, "Сумма", "table");
                    //меняем шрифт
                    insertClass(node, "changeTextIntable", "span");
                    //меняем размер ячейки и их обводку
                    insertClass(node, "changeTdItem", "td");
    
                    deleteTag(document, "table", "br");
                    htmlText = document.OuterHtml;
                }
    
                using (MemoryStream ms = new MemoryStream())
                {
                    var c = ms.ToArray();
                }
            }
    
            /**
             * Ищет экземпляр Node в document по
             * @param document - исходный объект документа
             * @param keySearchValue -  текстовый ключ, по которому необходимо найти элемент, по типу в теге содержится слово счет фактура
             * @param tag - тег, чей объект необходимо найти, указывать нужно без дополнительных знаков, 
             * пример правильного запроса QuerySelectorAll("br")
             * 
             * @return {HtmlAgilityPack.HtmlNode} возвращает найденный экземпляр HtmlNode
             */
            private static HtmlAgilityPack.HtmlNode searchNode(HtmlAgilityPack.HtmlNode document, string keySearchValue, string tag)
            {
                var htmlArr = document.QuerySelectorAll(tag);
    
                foreach (var item in htmlArr)
                {
                    if (item.InnerText.IndexOf(keySearchValue) != -1)
                    {
                        return item;
                    }
                }
                return null;
            }
            /**
             * Удаляет тег в определенной связи
             * 
             * @param node - связь , в которой происходит удаление
             * @param tag - тег по которому необходимо построить связь
             * @param delTag - тег, который необходимо удалить
             */
            private static void deleteTag(HtmlAgilityPack.HtmlNode node, string tag, string delTag)
            {
                var htmlArr = node.QuerySelectorAll(tag).ToArray();
                foreach (var item in htmlArr)
                {
                    item.OuterHtml.Replace(delTag, string.Empty);
                }
    
            }
            /**
             * Вставляет в тег определенный класс
             * 
             *@param node - связь в которой необходимо произвести изменения
             *@param currendClass - связь , который вставляем
             *@param tag тег, чью связь необходимо найти 
             *@param exp выражение, по которому необходимо найти элемент
             *@param флаг указывающий на количество проходов по массиву
             */
            private static void insertClass(HtmlAgilityPack.HtmlNode node, string currentClass, string tag, string exp = null, bool oneIter = false)
            {
                var htmlArr = node.QuerySelectorAll(tag).ToArray();
    
                foreach (var item in htmlArr)
                {
                    if (exp == null || item.OuterHtml.IndexOf(exp) != -1)
                    {
                        foreach (var itemAttrib in item.Attributes)
                        {
    
                            if (itemAttrib.Name == "class")
                            {
    
                                itemAttrib.Value = currentClass;
                                if (oneIter)
                                    return;
                            }
                        }
                    }
    
                }
    
            }
    Ответ написан
    Комментировать
  • Как прочитать xml в c#?

    D1m0nd
    @D1m0nd Автор вопроса
    junior C# developer
    XmlDocument xml = new XmlDocument();
                xml.Load(path);
                foreach (XmlElement element in xml.GetElementsByTagName("Состав"))
                {
                    if (element.Attributes["xsi:type"].InnerText == "АдресРФ")
                    {
                        foreach (XmlElement e in element)
                            if (e.Name == "Город")
                            {
                                Console.WriteLine("{0} = {1}", e.Name, e.InnerText);
                            }
                            
                    }
                }
    Ответ написан
    Комментировать