Как исправить & ldquo; DeprecationWarning: Collection # filterArray: использовать Collection # filter & rdquo ;?

Вы можете назвать эту «старую школу», но она работает.

  1. Скопируйте XML (или фрагмент и т. д.) и используйте Visual Studio (2015 (?), а снимок - 2017 ) feature "Paste XML / JSON As Classes" Это очень помогает с допустимым XML - особенно с «правильными» атрибутами, которые украшают сгенерированные классы. Кроме того, это просто класс, поэтому вы можете настроить его по своему усмотрению (сохраняя атрибуты). Для более сложных XML - таких как пространства имен / префиксы, вы действительно оцените это. Если у вас нет этого инструмента, вы можете использовать XSD.exe (еще более старая школа) - делает то же самое для документов XML.
  2. Автогенерируемые классы сверху шаг: ... спотыкаясь о том, что у них одинаковое имя тега ... Не надо. Элементы XML могут повторяться - часто делают (например, sitemap.xml на каждом веб-сайте). Сгенерированный класс поможет вам понять его. Это стандартный набор / массив / список.
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class configuration
    {
    
        private configurationSetting[] settingField;
    
        /// 
        [System.Xml.Serialization.XmlElementAttribute("setting")]
        public configurationSetting[] setting
        {
            get
            {
                return this.settingField;
            }
            set
            {
                this.settingField = value;
            }
        }
    }
    
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class configurationSetting
    {
    
        private string valueField;
    
        private string nameField;
    
        /// 
        public string value
        {
            get
            {
                return this.valueField;
            }
            set
            {
                this.valueField = value;
            }
        }
    
        /// 
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                this.nameField = value;
            }
        }
    }
    

С учетом вышеизложенного вы можете сделать это:

string rawXml = "127.0.0.180";

var ser = new XmlSerializer(typeof(configuration));
configuration config;
using (TextReader rdr = new StringReader(rawXml))
{
    config = (configuration)ser.Deserialize(rdr);
}


foreach (configurationSetting setting in config.setting)
{
    Console.WriteLine($"{setting.name} = {setting.value}");
}

Выход:

host = 127.0.0.1
port = 80

Hth ..

0
задан Federico Grandi 19 January 2019 в 13:36
поделиться

1 ответ

Это всего лишь предупреждение, а не ошибка: он не влияет на ваш код, вы можете просто проигнорировать его.
В GitHub есть открытая проблема ( link ), в которой говорится, что это ошибка, вызванная внутренним использованием метода discord.js, который был помечен как устаревший. Один из разработчиков сказал, что исправит это в следующем выпуске, а пока просто игнорируйте его.

0
ответ дан Federico Grandi 19 January 2019 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: