Удалить данные из пространства имен из XML с несколькими именами - PullRequest
0 голосов
/ 12 октября 2018

У меня есть XML, как показано ниже.Этот XML содержит элементы из 3 пространств имен.Я хочу удалить данные и элементы / атрибуты 1 пространства имен и сохранить окончательный XML с 2 пространствами имен и его элементами.

Среда разработки: 1. Spring 2. Java 8

<ns1:animals xmlns:ns1="http://.../animal" xmlns:ns2="http://.../tiger" xmlns:ns3="http://.../fish">
        <ns1:animalDescription>
            <ns1:animalType>fish</ns1:animalType>
            <ns1:animalLength>VALUE</ns1:animalLength>
            <ns1:partsOfBody>
               <ns1:eyes ns3:isCompund="true">
                  <ns1:countOfEyes>100</ns1:countOfEyes>
               </ns1:eyes>
               <ns3:gills>bigGills</ns3:gills>
         </ns1:animalDescription>
            <ns1:animalDescription>
            <ns1:animalType>TIGER</ns1:animalType>
            <ns1:animalLength>3 meter</ns1:animalLength>
            <ns1:partsOfBody>
               <ns1:eyes>
                  <ns1:countOfEyes>2</ns1:countOfEyes>
               </ns1:eyes>
               <ns2:tailLength>1 Meter</ns2:tailLength>
         </ns1:animalDescription>
    <ns1:animals>

Я хочу удалить nameSpace xmlns: ns3 = "http: //.../fish".Я хочу окончательный XML следующим образом.Я пытался делать строковые операции, но это не usefule для сложных xsd.Я хочу выполнить это с помощью любого XML API.Пожалуйста, проведите меня через это.Что использовать, чтобы достичь этого.Я ищу эффективное решение.

<ns1:animals xmlns:ns1="http://.../animal" xmlns:ns2="http://.../tiger" xmlns:ns3="http://.../fish">
        <ns1:animalDescription>
            <ns1:animalType>fish</ns1:animalType>
            <ns1:animalLength>VALUE</ns1:animalLength>
            <ns1:partsOfBody>
               <ns1:eyes>
                  <ns1:countOfEyes>100</ns1:countOfEyes>
               </ns1:eyes>

         </ns1:animalDescription>
         <ns1:animalDescription>
            <ns1:animalType>TIGER</ns1:animalType>
            <ns1:animalLength>3 meter</ns1:animalLength>
            <ns1:partsOfBody>
               <ns1:eyes>
                  <ns1:countOfEyes>2</ns1:countOfEyes>
               </ns1:eyes>
               <ns2:tailLength>1 Meter</ns2:tailLength>
         </ns1:animalDescription>
    <ns1:animals>

FInal XML не содержит следующих данных.1. ns3: isCompund = "true" 2. bigGills

1 Ответ

0 голосов
/ 12 октября 2018

В XSLT 3.0:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
  <xsl:mode on-no-match="shallow-copy"/>
  <xsl:template match="ns3:* ! @ns3:*" xmlns:ns3="http://.../fish"/>
</xsl:transform>

Если у вас есть только XSLT 1.0 или 2.0, замените объявление xsl:mode стандартным правилом шаблонов удостоверений мелкой копии.

...