Разбираюсь с XML

  • В этой теме 45 ответов, 3 участника, последнее обновление 8 лет назад сделано Romiros.
Просмотр 15 сообщений - с 1 по 15 (из 46 всего)
  • Автор
    Сообщения
  • #9311
    manjey73
    Участник

    Пытаюсь сделать опрос xml файла по аналогии Modbus.dll но лыжи не едут

    TableTypes tableType = elemGroupElem.GetAttrAsEnum<TableTypes>(«tableType»);

    Подскажите где этот метод находится ? Поиском по всему решению находит только 4 строки и все находятся в DeviceTemplate, откуда взялся это GetAttrAsEnum и собственно его аналоги As

    #9312
    Romiros
    Участник

    Пространство имён ScadaUtils

    #9313
    manjey73
    Участник

    Спасибо, пока у меня это тестовый файл exe, я так понимаю надо подключить одну из библиотек Scada?

    Подключил все три и прописал using Scada; ошибка ушла, еще раз спасибо.
    До самого драйвера я долго не доберусь, так что пока через exe все делаю….

    • Ответ изменён 8 лет назад пользователем manjey73.
    #9319
    Mikhail
    Модератор

    ScadaData.dll (и ещё Log.dll)

    #9423
    manjey73
    Участник

    Уже который день бьюсь и никак не могу победить. Надо в List загнать коллекцию из xml — Attributes() из System.XML.Linq

    И главное как потом этот List опрашивать ?

    В конечном варианте надо получить что-то типа list_command[0].value1

    где list_command это список значений атрибутов, а value1 это имя переменной в списке…

    И еще вопрос по программированию, можно ли создать List с именем Ноды xml файла на лету, не зная, какое имя будет в файле ?
    Цель — написать универсальный кусок кода, где имена будут прописаны в одном месте программы и использоваться в коде, чтобы под каждый драйвер не перепахивать часть кода…

    #9427
    Mikhail
    Модератор

    Всё-таки классический подход заключается в том, чтобы создать объектную модель настроек с нормальными классами и их свойствами. Если не хочется самому делать загрузку и сохранение XML, то самый быстрый подход на основе XmlSerializer приведен в другой нашей теме.
    Если поместить объекты XmlNode в свой список, с ними всё равно будет неудобно работать. Linq я мало использовал, не смогу подсказать по нему.

    можно ли создать List с именем Ноды xml файла на лету, не зная, какое имя будет в файле ?

    Что значит «List с именем Ноды»? Это List<string> или что-то другое?

    #9433
    manjey73
    Участник

    Я так понимаю, это ограничение .NET ?
    List<string> Имя_взятое_из_файла = new List<string>();

    Насколько понимаю никаких символических ссылок нельзя сделать или есть какой-то обход этого ?
    Почему неудобно ? как раз таки удобно создавать теги перебирая массив или список, тем более когда неизвестно сколько тегов будет…

    #9434
    Romiros
    Участник

    Найдите пример сериализации класса по-сложнее, чем имя фамилия, как обычно в примерах. Посмотрите, как сделано и сделайте по аналогии. У Вас будет хоть тысяча заранее неизвестных переменных, их запись/чтение в xml не ваша проблема.

    #9435
    manjey73
    Участник

    Так вот и не могу найти примеры сериализации посложнее, везде имя.фамилия.возраст и тому подобное, а тут еще и вложения…
    Плюс я думаю, как потом в логике драйвера мне это крутить, сейчас одно найдешь, потом начнешь разбираться с логикой и поймешь что это еще сложнее…

    Вроде сериализация подразумевает создание класса переменных, а у меня есть участки xml где я понятия не имею сколько их окажется. Может быть 10, а может 16 и с учетом логики драйвера их надо пронумеровать сквозняком, даже если они в разных элементах лежат…

    • Ответ изменён 8 лет назад пользователем manjey73.
    #9438
    Romiros
    Участник

    Вы можете в классе создать коллекции под переменные (тот же List) и не важно сколько будет переменных.

    #9439
    Romiros
    Участник

    Хотя это не точно. Прошу прощения, могу и ошибаться. Нужно посмотреть

    #9444
    manjey73
    Участник

    Это какой-то пи…. не понимаю, как создать классы для сериализации чтобы получилась моя структура….

    #9446
    Romiros
    Участник

    Да у Вас она замороченная 🙂
    Надо написать по русски словами или диаграммой.
    Что-то вроде дерева.
    Главный класс Device
    В нем подклассы в них свойства

    #9447
    manjey73
    Участник

    Че эта она замороченная ?
    Параметры в одном дереве, запросы в другом, команды в третьем, полученные ответы (после того как они будут получены правда) в четвертом.

    #9453
    Mikhail
    Модератор

    как создать классы для сериализации чтобы получилась моя структура…

    Какая структура получается сейчас, если сериализовать как есть?

Просмотр 15 сообщений - с 1 по 15 (из 46 всего)
  • Для ответа в этой теме необходимо авторизоваться.