Как устранить шестнадцатеричные значения и переименовать теги в документе XML - PullRequest
0 голосов
/ 27 марта 2012

У меня есть XML-файлы, как показано ниже.

  1. Имея шестнадцатеричные значения, этот тип XML-файла SSIS XML Task не принимает.
  2. Теги, подобные <FIRST.NAME>, мне нужно заменить<FIRST.NAME> с <FIRST_NAME>.

Мне нужно изменить примерно на 40 тегов в каждом XML-файле.

Как мне добиться этих двух вещей, кто-нибудь может поставить меня правильнонаправление ??

1 Ответ

0 голосов
/ 27 марта 2012

В этом ответе предполагается, что вы имеете в виду шестнадцатеричные ссылки на символы, когда говорите «шестнадцатеричное значение». Если это неверно, уточните.

Простое выполнение XML через процессор XSLT должно разрешить ваши шестнадцатеричные ссылки. (Я тестировал с Xalan, Saxon 6.5.5 и Saxon-HE / PE / EE 9.3.05.)

Единственное, что вам нужно, кроме преобразования идентичности, - это другой шаблон для переименования ваших элементов.

Ввод XML

<some.doc>
  <some.element attr="test">
    <another.element>Here is a hex ref: &#x3A9;</another.element>
    <another.element>Here is a hex ref: &#x3A3;</another.element>
  </some.element>
</some.doc>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="text()|processing-instruction()|comment()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*">
    <xsl:element name="{translate(name(),'.','_')}">
      <xsl:apply-templates select="node()|@*"/>     
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

Вывод XML

<some_doc>
   <some_element attr="test">
      <another_element>Here is a hex ref: Ω</another_element>
      <another_element>Here is a hex ref: Σ</another_element>
   </some_element>
</some_doc>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...