Как удалить пространство имен XML в Mulesoft Dataweave

Когда я преобразовываю сообщение с помощью Mulesoft dataweave, я хочу избавиться от всех пространств имен xmlns.

Это мое сообщение:

<?xml version='1.0' encoding='UTF-8'?>
<Entries xmlns = "http://www.example.nl/Entries" type = "Catalog" name = "xxx Catalog" exportDate = "2018-01-18T10:08:27.609Z">
  <Entry id = "264063" deleted = "0" creationDate = "2017-05-26T14:26:09.511Z" lastModifiedDate = "2017-10-13T22:46:39.000Z">
    <Attributes>
      <Attribute>
        <MetadataPath>Just an example 1</MetadataPath>
        <Locale/>
      </Attribute>
      <Attribute>
        <MetadataPath>Just an example 2</MetadataPath>
        <Locale>en_GB</Locale>
      </Attribute>
    </Attributes>
    <Categories>
      <Category>
        <Hierarchy>GPC_Hierarchy</Hierarchy>
        <Id>999999</Id>
      </Category>
      <Category>
        <Hierarchy>GPC_xx_Hierarchy</Hierarchy>
        <Id>999998</Id>
      </Category>
    </Categories>
    <Specs>
      <Spec>Validatie Spec</Spec>
      <Spec>Item Spec</Spec>
    </Specs>
  </Entry>
</Entries>

Когда я запускаю этот код dataweave:

%dw 2.0
var x = payload.Entries
output application/xml encoding = "utf-8"
---

{
   Entry @('type': x.@'type', name: x.@name, exportDate: x.@exportDate, id: x.Entry.@id, 
  deleted: x.Entry.@deleted, creationDate: x.Entry.@creationDate, lastModifiedDate:    x.Entry.@lastModifiedDate )
    : {(x.Entry.Attributes ), 
    (
       Categories: (x.Entry.Categories)
    ),
    (
      Specs:  (x.Entry.Specs)
    )
    }
    
    
}

Тогда это результат

<?xml version='1.0' encoding='UTF-8'?>
<Entry type = "Catalog" name = "xxx Catalog" exportDate = "2018-01-18T10:08:27.609Z" id = "264063" deleted = "0" creationDate = "2017-05-26T14:26:09.511Z" lastModifiedDate = "2017-10-13T22:46:39.000Z">
  <Attribute xmlns = "http://www.example.nl/Entries">
    <MetadataPath>Just an example 1</MetadataPath>
    <Locale/>
  </Attribute>
  <Attribute xmlns = "http://www.example.nl/Entries">
    <MetadataPath>Just an example 2</MetadataPath>
    <Locale>en_GB</Locale>
  </Attribute>
  <Categories>
    <Category xmlns = "http://www.example.nl/Entries">
      <Hierarchy>GPC_Hierarchy</Hierarchy>
      <Id>999999</Id>
    </Category>
    <Category xmlns = "http://www.example.nl/Entries">
      <Hierarchy>GPC_xx_Hierarchy</Hierarchy>
      <Id>999998</Id>
    </Category>
  </Categories>
  <Specs>
    <Spec xmlns = "http://www.example.nl/Entries">Validatie Spec</Spec>
    <Spec xmlns = "http://www.example.nl/Entries">Item Spec</Spec>
  </Specs>
</Entry>

Как избавиться от всех этих пространств имен xmlns="http://www.example.nl/Entries"?

Конечно, я могу переписать сообщение, но это не входит в мои намерения. Может быть, есть какой-то тег в dataweave, что-то вроде этого?

output application/xml removeAllNamespaces

Спасибо

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
2 238
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать приведенный ниже код, который соответствует вашим ожиданиям. Для XML нет прямого свойства записи, чтобы удалить все nameSpace.

%dw 2.0
var x = payload.Entries

fun removeALLNameSpacesFromXML(in) =
  in mapObject {
    '$$' @(($$.@)): 
      if ($ is Object)
        removeALLNameSpacesFromXML($)
      else
        ($)
  }
  //This is your transormation code ,I have just assigned with some variable to pass as a Function argument of removeALLNameSpacesFromXML function. 
var yourPayloadWithXmlns = {
  Entry @('type': x.@'type', name: x.@name, exportDate: x.@exportDate, id: x.Entry.@id, deleted: x.Entry.@deleted, creationDate: x.Entry.@creationDate, lastModifiedDate: x.Entry.@lastModifiedDate): {
    (x.Entry.Attributes),
    (
      Categories: (x.Entry.Categories)
    ),
    (
      Specs: (x.Entry.Specs)
    )
  }
}
output application/xml  
---
removeALLNameSpacesFromXML(yourPayloadWithXmlns)

Пример вывода:

<?xml version='1.0' encoding='UTF-8'?>
<Entry type = "Catalog" name = "xxx Catalog" exportDate = "2018-01-18T10:08:27.609Z" id = "264063" deleted = "0" creationDate = "2017-05-26T14:26:09.511Z" lastModifiedDate = "2017-10-13T22:46:39.000Z">
  <Attribute>
    <MetadataPath>Just an example 1</MetadataPath>
    <Locale/>
  </Attribute>
  <Attribute>
    <MetadataPath>Just an example 2</MetadataPath>
    <Locale>en_GB</Locale>
  </Attribute>
  <Categories>
    <Category>
      <Hierarchy>GPC_Hierarchy</Hierarchy>
      <Id>999999</Id>
    </Category>
    <Category>
      <Hierarchy>GPC_xx_Hierarchy</Hierarchy>
      <Id>999998</Id>
    </Category>
  </Categories>
  <Specs>
    <Spec>Validatie Spec</Spec>
    <Spec>Item Spec</Spec>
  </Specs>
</Entry>

Привет, Маниш, спасибо за ответ. Жаль, что нет свойства записи XML, но ваше решение справляется со своей задачей.

Ben 19.12.2020 22:14

Другие вопросы по теме