Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Атрибут для xml при создании объекта (https://javascript.ru/forum/misc/82598-atribut-dlya-xml-pri-sozdanii-obekta.html)

DenZen 29.05.2021 23:38

Атрибут для 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 в теле запроса. Наверно его еще в стрингу надо преобразовать, как это можно сделать?

ksa 30.05.2021 12:12

Цитата:

Сообщение от DenZen
Не пойму, как задать атрибут для тега при таком создании объекта?

У объектов JS есть только свойства и методы.

ksa 30.05.2021 12:22

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

DenZen 30.05.2021 15:00

Спасибо! Воспользовался этим способом - закрывает мои задачи:)

DenZen 01.06.2021 18:18

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)

рони 01.06.2021 18:26

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

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

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

ksa 01.06.2021 21:30

Цитата:

Сообщение от DenZen
Могу ли я переиспользовать этот же xml документ, заменяя там переменную, может быть как параметр можно передавать?

Не понял я вопроса... :-?
Параметр можно передать только функции или методу. При формировании алгоритма ты волен делать все что угодно.
Т.е. тебя ограничивает лишь твоя фантазия.

Сейчас на всяких React.js или Vue.js такие варианты выдумывают при формировании ДОМ - закачаешься.

DenZen 01.06.2021 22:23

Сорри, что-то я не объяснил. Я xml использую чтобы отправлять его на сервер запросом api. Эти xml по структуре похожи, меняются только некоторые атрибуты или данные внутри тега. Вот я и пытаюсь понять, описав xml документ для одного запроса, и чтобы не копировать весь xml в другой запрос заменив в нем только атрибут, хотелось бы переиспользовать xml который я описывал для первого запроса.

ksa 01.06.2021 22:31

Тогда сделай функцию, которая и будет формировать тот ХМЛ, в зависимости от неких параметров...
Будешь вызывать ее в своих АПИ.

DenZen 03.06.2021 11:17

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);
}


Часовой пояс GMT +3, время: 08:23.