29.05.2021, 22:38
|
Интересующийся
|
|
Регистрация: 29.05.2021
Сообщений: 11
|
|
Атрибут для xml при создании объекта
Искал как создать объект xml.
Объект нужен для того чтобы в последующем описывать разные xmlки, в тегах/атрибутах передавать данные в переменных, потом эти xml слать POST через API.
На стак нашел вот такую инструкцию
// Define class constructor
var SampleObject1 = function()
{
this.name = 'MySampleObject';
this.id = 1;
this.seed = 1.009;
this.createdAt = new Date();
this.obj = null;
};
// Create instance of serializer
var serializer = new Ant.Serializer();
// Register SampleObject1, so serializer gets to know how to deal with such objects
serializer.register('SampleObject1', SampleObject1);
// Create data that will be serialized
var object = new SampleObject1();
object.obj = new SampleObject1();
// Serialize and get string representation
var xml = serializer.save(object).toString();
Не пойму, как задать атрибут для тега при таком создании объекта?
И вообще смогу ли потом отправить такой document в теле запроса. Наверно его еще в стрингу надо преобразовать, как это можно сделать?
|
|
30.05.2021, 11:12
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,232
|
|
Сообщение от DenZen
|
Не пойму, как задать атрибут для тега при таком создании объекта?
|
У объектов JS есть только свойства и методы.
|
|
30.05.2021, 11:22
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,232
|
|
DenZen, вот примерчик как делать XML на нативном JS
// creates a Document object with root "<report>"
var doc = document.implementation.createDocument(null, "report", null);
// create the <submitter>, <name>, and text node
var submitterElement = doc.createElement("submitter");
var nameElement = doc.createElement("name");
var name = doc.createTextNode("John Doe");
// append nodes to parents
nameElement.appendChild(name);
submitterElement.appendChild(nameElement);
// append to document
doc.documentElement.appendChild(submitterElement);
https://askdev.ru/q/sozdanie-xml-dok...ascript-87228/
При таком подходе ты можешь добавлять и атрибуты, используя стандартный метод
https://learn.javascript.ru/attribut...rties#atributy
|
|
30.05.2021, 14:00
|
Интересующийся
|
|
Регистрация: 29.05.2021
Сообщений: 11
|
|
Спасибо! Воспользовался этим способом - закрывает мои задачи
|
|
01.06.2021, 17:18
|
Интересующийся
|
|
Регистрация: 29.05.2021
Сообщений: 11
|
|
ksa,
Вот такой вопрос возник, описал xml. Могу ли я переиспользовать этот же xml документ, заменяя там переменную, может быть как параметр можно передавать?
var xmlProcessingResult = document.implementation.createDocument("", "", null);
var requestProcessingResultXmlElement = xmlProcessingResult.createElement("a");
requestProcessingResultXmlElement.setAttribute("1", "b");
requestProcessingResultXmlElement.setAttribute("2", "c");
var processingResultExtSystemXml = xmlProcessingResult.createElement("d");
processingResultExtSystemXml.innerHTML = foo(это переменная);
requestProcessingResultXmlElement.appendChild(processingResultExtSystemXml);
xmlProcessingResult.appendChild(requestProcessingResultXmlElement);
xmlRequestProcessingResult = new XMLSerializer().serializeToString(xmlProcessingResult)
Последний раз редактировалось DenZen, 01.06.2021 в 18:01.
|
|
01.06.2021, 17:26
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
DenZen,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
01.06.2021, 20:30
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,232
|
|
Сообщение от DenZen
|
Могу ли я переиспользовать этот же xml документ, заменяя там переменную, может быть как параметр можно передавать?
|
Не понял я вопроса...
Параметр можно передать только функции или методу. При формировании алгоритма ты волен делать все что угодно.
Т.е. тебя ограничивает лишь твоя фантазия.
Сейчас на всяких React.js или Vue.js такие варианты выдумывают при формировании ДОМ - закачаешься.
|
|
01.06.2021, 21:23
|
Интересующийся
|
|
Регистрация: 29.05.2021
Сообщений: 11
|
|
Сорри, что-то я не объяснил. Я xml использую чтобы отправлять его на сервер запросом api. Эти xml по структуре похожи, меняются только некоторые атрибуты или данные внутри тега. Вот я и пытаюсь понять, описав xml документ для одного запроса, и чтобы не копировать весь xml в другой запрос заменив в нем только атрибут, хотелось бы переиспользовать xml который я описывал для первого запроса.
|
|
01.06.2021, 21:31
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,232
|
|
Тогда сделай функцию, которая и будет формировать тот ХМЛ, в зависимости от неких параметров...
Будешь вызывать ее в своих АПИ.
|
|
03.06.2021, 10:17
|
Интересующийся
|
|
Регистрация: 29.05.2021
Сообщений: 11
|
|
ksa,
Получилось сделать функцию с параметрами, которая передает нужный атрибут или значение тега. Не могу сообразить как то можно, что бы зависимости от одного параметра был один тег xml, а от другого параметра другой тег xml? Просто в конце сделать логику if...else?:
if (param === ""){
var a = xm.createElement("a");
a.innerHTML = foo(это переменная);
xml.appendChild(a);
} else {
var b = xm.createElement("b");
b.innerHTML = foo(это переменная);
xml.appendChild(b);
}
|
|
|
|