Как в XMLSpy конвертировать в строку .NET объект?

Ссылка скопирована
1 ответ

Привет!

Заранее извиняюсь за непрофессиональный язык.
Вопрос по редактору скриптов (макросов) в программе Altova XMLSpy. Хотя, наверное, суть будет понятна всем, кто имел дело с работой над импортированными в JS код библиотеками .NET.
Так вот: появилась необходимость работы с системной библиотекой System.Guid для генерации ГУИД. В редактор можно импортировать .NET объекты через метод CLR.Create (Подробнее об этом написано в мануале по XMLSpy: XMLSpy).
Есть такой код:

var objGuid = CLR.Create("System.Guid"); var guid = objGuid.NewGuid(); confirm(guid);

var objGuid = CLR.Create("System.Guid"); var guid = objGuid.NewGuid(); confirm(guid);

который вроде работает и даже выводит в окне сгенерированный guid

Как в XMLSpy конвертировать в строку .NET объект?

Проблема в том, что для того, чтобы использовать этот ГУИД в документе xml, он должен быть преобразован в строку, но при импортировании System.Guid, тип objGuid - это object, а guid - unknown

Как в XMLSpy конвертировать в строку .NET объект?

Команда guid.ToString() не работает, хотя присутствует в этом объекте (Guid)

Просьба подсказать, есть ли способ преобразовать тип guid, который, я так понимаю, не воспринимается JS как родной, в тип string. Возможно, Вы в курсе, можно ли использовать другие методы CLR из мануала XMLSpy для этого.

Спасибо!

Дополнительно:

Ответы:

Может попробовать toString(), который в самом js?

  • К сожалению, не срабатывает, т. к., если я правильно понимаю, тип переменной guid - это unknown (toString() со скобками выдает тот же результат).

    Как в XMLSpy конвертировать в строку .NET объект?

    Но вот если к ToString() приводить objGuid средствами самого объекта, то получается строка, но она полностью занулевона:

    Как в XMLSpy конвертировать в строку .NET объект?

  • а если его в xml вставить, что будет?
  • Сергей Соловьев, при попытке заменить текст в xml объектом quid = obj.NewGuid() редактор ругается на несоответствие типов:

    Как в XMLSpy конвертировать в строку .NET объект?

    что мне немного не понятно, ведь в определении вызова окна конфирма написано confirm(string strText)
    guid = objGuid.ToString() работает без ошибок:

    Как в XMLSpy конвертировать в строку .NET объект?

  • aerdev, здесь скорее проблема в том, что CLR.Create используется для вызова конструктора.
    А Guid.NewGuid - это статический метод, которого нет у инстанса. Попробуй CLR.Static
    + ты еще не показывал, что будет если вызвать ToString() для guid, который создался через NewGuid()
  • Сергей Соловьев, если вызывать guid.ToString(), редактор выдает такую ошибку:

    Как в XMLSpy конвертировать в строку .NET объект?

    При использовании CLR.Static (надеюсь, я правильно это сделал), особо ничего не меняется:
    var objGuid = CLR.Static("System.Guid").NewGuid(); имеет так же тип unknown, ГУИД генерится и его можно вывести в окне, но не преобразовывается в строку ни toSting-ом, ни ToString()-ом:

    Как в XMLSpy конвертировать в строку .NET объект?

  • aerdev, а что за задача то?
  • Сергей Соловьев, для рабочих xml-пакетов хочу генерировать ГУИД прямо в редакторе. У меня есть реализация, использующая код JS из комментария статьи: How do I create a GUID / UUID?
    Реализация же с импортом системных библиотек мне самому интересна. Думаю, если разобраться как это правильно сделать, можно ещё кучу всего интересного придумать для обработки xml-документов с использованием разных .NET-объектов.
  • aerdev, если нужен просто случайный генератор ID, то из этого ответа подойдет, но подобный интероп я бы не советовал делать, т.к. слишком сильно будешь связан с этим продуктом (у которого даже норм документации нет)

    Могу предложить следующие варианты для строкового представления:
    - new String(guid)
    - `${guid}`
    - как нибудь скастовать к object и вызвать ToString для него

  • Сергей Соловьев, да, документация там и вправду, видимо, не для новичков, как я. Буду пробовать ещё какие-нибудь способы. Спасибо за помощь.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

Для конвертации .NET объекта в строку в XMLSpy можно использовать следующий подход:

1. Откройте XMLSpy и загрузите XML-файл, в котором вы хотите выполнить конвертацию .NET объекта в строку.

2. Создайте новый элемент или найдите существующий, в который вы хотите поместить строковое представление .NET объекта.

3. Используйте встроенные возможности XMLSpy для работы с .NET объектами. Для этого вам понадобится создать экземпляр .NET объекта в вашем XML-документе.

Пример кода на C# для создания .NET объекта в XMLSpy:

// Создаем новый экземпляр класса
MyClass myObject = new MyClass();
 
// Присваиваем значения свойствам объекта
myObject.Property1 = "Value1";
myObject.Property2 = "Value2";
 
// Преобразуем объект в строку
string objectAsString = myObject.ToString();

// Создаем новый экземпляр класса MyClass myObject = new MyClass(); // Присваиваем значения свойствам объекта myObject.Property1 = "Value1"; myObject.Property2 = "Value2"; // Преобразуем объект в строку string objectAsString = myObject.ToString();

4. После выполнения преобразования .NET объекта в строку, вы можете использовать полученное значение для заполнения соответствующего элемента в вашем XML-документе.

5. После завершения всех необходимых действий сохраните изменения в вашем XML-файле.

Таким образом, вы сможете успешно конвертировать .NET объект в строку в XMLSpy, используя предложенный выше подход.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно