Как в XMLSpy конвертировать в строку .NET объект?
Привет!
Заранее извиняюсь за непрофессиональный язык.
Вопрос по редактору скриптов (макросов) в программе 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
Проблема в том, что для того, чтобы использовать этот ГУИД в документе xml, он должен быть преобразован в строку, но при импортировании System.Guid, тип objGuid - это object, а guid - unknown
Команда guid.ToString() не работает, хотя присутствует в этом объекте (Guid)
Просьба подсказать, есть ли способ преобразовать тип guid, который, я так понимаю, не воспринимается JS как родной, в тип string. Возможно, Вы в курсе, можно ли использовать другие методы CLR из мануала XMLSpy для этого.
Спасибо!
Дополнительно:
Ответы:
Может попробовать toString(), который в самом js?
- К сожалению, не срабатывает, т. к., если я правильно понимаю, тип переменной guid - это unknown (toString() со скобками выдает тот же результат).
Но вот если к ToString() приводить objGuid средствами самого объекта, то получается строка, но она полностью занулевона:
- а если его в xml вставить, что будет?
- Сергей Соловьев, при попытке заменить текст в xml объектом quid = obj.NewGuid() редактор ругается на несоответствие типов:
что мне немного не понятно, ведь в определении вызова окна конфирма написано confirm(string strText)
guid = objGuid.ToString() работает без ошибок: - aerdev, здесь скорее проблема в том, что CLR.Create используется для вызова конструктора.
А Guid.NewGuid - это статический метод, которого нет у инстанса. Попробуй CLR.Static
+ ты еще не показывал, что будет если вызвать ToString() для guid, который создался через NewGuid() - Сергей Соловьев, если вызывать guid.ToString(), редактор выдает такую ошибку:
При использовании CLR.Static (надеюсь, я правильно это сделал), особо ничего не меняется:
var objGuid = CLR.Static("System.Guid").NewGuid(); имеет так же тип unknown, ГУИД генерится и его можно вывести в окне, но не преобразовывается в строку ни toSting-ом, ни ToString()-ом: - aerdev, а что за задача то?
- Сергей Соловьев, для рабочих xml-пакетов хочу генерировать ГУИД прямо в редакторе. У меня есть реализация, использующая код JS из комментария статьи: How do I create a GUID / UUID?
Реализация же с импортом системных библиотек мне самому интересна. Думаю, если разобраться как это правильно сделать, можно ещё кучу всего интересного придумать для обработки xml-документов с использованием разных .NET-объектов. - aerdev, если нужен просто случайный генератор ID, то из этого ответа подойдет, но подобный интероп я бы не советовал делать, т.к. слишком сильно будешь связан с этим продуктом (у которого даже норм документации нет)
Могу предложить следующие варианты для строкового представления:
- new String(guid)
- `${guid}`
- как нибудь скастовать к object и вызвать ToString для него - Сергей Соловьев, да, документация там и вправду, видимо, не для новичков, как я. Буду пробовать ещё какие-нибудь способы. Спасибо за помощь.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос








Для конвертации .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();
4. После выполнения преобразования .NET объекта в строку, вы можете использовать полученное значение для заполнения соответствующего элемента в вашем XML-документе.
5. После завершения всех необходимых действий сохраните изменения в вашем XML-файле.
Таким образом, вы сможете успешно конвертировать .NET объект в строку в XMLSpy, используя предложенный выше подход.