Атрибут для 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 в теле запроса. Наверно его еще в стрингу надо преобразовать, как это можно сделать? |
Цитата:
|
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 |
Спасибо! Воспользовался этим способом - закрывает мои задачи:)
|
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,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
Параметр можно передать только функции или методу. При формировании алгоритма ты волен делать все что угодно. Т.е. тебя ограничивает лишь твоя фантазия. Сейчас на всяких React.js или Vue.js такие варианты выдумывают при формировании ДОМ - закачаешься. |
Сорри, что-то я не объяснил. Я xml использую чтобы отправлять его на сервер запросом api. Эти xml по структуре похожи, меняются только некоторые атрибуты или данные внутри тега. Вот я и пытаюсь понять, описав xml документ для одного запроса, и чтобы не копировать весь xml в другой запрос заменив в нем только атрибут, хотелось бы переиспользовать xml который я описывал для первого запроса.
|
Тогда сделай функцию, которая и будет формировать тот ХМЛ, в зависимости от неких параметров...
Будешь вызывать ее в своих АПИ. |
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, время: 12:04. |