Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2021, 22:38
Интересующийся
Отправить личное сообщение для DenZen Посмотреть профиль Найти все сообщения от DenZen
 
Регистрация: 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 в теле запроса. Наверно его еще в стрингу надо преобразовать, как это можно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 30.05.2021, 11:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от DenZen
Не пойму, как задать атрибут для тега при таком создании объекта?
У объектов JS есть только свойства и методы.
Ответить с цитированием
  #3 (permalink)  
Старый 30.05.2021, 11:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

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
Ответить с цитированием
  #4 (permalink)  
Старый 30.05.2021, 14:00
Интересующийся
Отправить личное сообщение для DenZen Посмотреть профиль Найти все сообщения от DenZen
 
Регистрация: 29.05.2021
Сообщений: 11

Спасибо! Воспользовался этим способом - закрывает мои задачи
Ответить с цитированием
  #5 (permalink)  
Старый 01.06.2021, 17:18
Интересующийся
Отправить личное сообщение для DenZen Посмотреть профиль Найти все сообщения от DenZen
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 01.06.2021, 17:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

DenZen,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #7 (permalink)  
Старый 01.06.2021, 20:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

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

Сейчас на всяких React.js или Vue.js такие варианты выдумывают при формировании ДОМ - закачаешься.
Ответить с цитированием
  #8 (permalink)  
Старый 01.06.2021, 21:23
Интересующийся
Отправить личное сообщение для DenZen Посмотреть профиль Найти все сообщения от DenZen
 
Регистрация: 29.05.2021
Сообщений: 11

Сорри, что-то я не объяснил. Я xml использую чтобы отправлять его на сервер запросом api. Эти xml по структуре похожи, меняются только некоторые атрибуты или данные внутри тега. Вот я и пытаюсь понять, описав xml документ для одного запроса, и чтобы не копировать весь xml в другой запрос заменив в нем только атрибут, хотелось бы переиспользовать xml который я описывал для первого запроса.
Ответить с цитированием
  #9 (permalink)  
Старый 01.06.2021, 21:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Тогда сделай функцию, которая и будет формировать тот ХМЛ, в зависимости от неких параметров...
Будешь вызывать ее в своих АПИ.
Ответить с цитированием
  #10 (permalink)  
Старый 03.06.2021, 10:17
Интересующийся
Отправить личное сообщение для DenZen Посмотреть профиль Найти все сообщения от DenZen
 
Регистрация: 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);
}
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление атрибута data-* при создании элемента Neo54213 jQuery 3 17.07.2017 03:13
При вызове локальной функции объекта не могу использовать свойства объекта Gudsaf Общие вопросы Javascript 7 17.09.2016 20:23
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 14:17