Разбор Java XML - PullRequest
       26

Разбор Java XML

2 голосов
/ 03 апреля 2009

Какой самый быстрый способ конвертировать документ, например:

<customermodel:Customer>
    <creditCards>
        <cardNumber>@0</cardNumber>
        <provider>@HSBC</provider>
        <xsi:type>@customermodel:CreditCard</xsi:type>
             23242552
    </creditCards>
    .
    .

Так что элементы с @ становятся атрибутами для родительского элемента.

то есть добраться до:

<customermodel:Customer>
    <creditCards cardNumber="0" provider="HSBC" xsi-type="customermodel:CreditCard>
         232323232
    </creditCards>
        .
        .

Используя дом? или сакс парсер или вручную? и я могу переместить @ в <> х

Ответы [ 4 ]

2 голосов
/ 10 мая 2009

Если вы решите использовать XSLT, он будет выглядеть примерно так:

  <!-- process element and attributes first so that whitespace doesn't interfere -->
  <xsl:template match="creditCards">
    <xsl:copy>
      <xsl:apply-templates select="* | @*"/>
      <xsl:apply-templates select="text()"/>
    </xsl:copy>    
  </xsl:template>

  <!-- change childrent of creditCards to attributes and strip first charcter from value -->
  <xsl:template match="creditCards/*">
    <xsl:attribute name="{name()}">
      <xsl:value-of select="substring(., 2)"/>
    </xsl:attribute>
  </xsl:template>

  <!-- rename xsi:type -->
  <xsl:template match="creditCards/xsi:type">
    <xsl:attribute name="xsi-type">
      <xsl:value-of select="substring(., 2)"/>
    </xsl:attribute>
  </xsl:template>

  <!-- identity transform -->
  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>
1 голос
/ 03 апреля 2009

Я думаю, XSLT - это путь.

Подробнее здесь

И используйте SAX-парсер, если у вас нет веских причин.

1 голос
/ 03 апреля 2009

Лучший способ работать напрямую с данными XML - это использовать XQuery. Это не самая простая вещь для изучения, но если вы много работаете с XML, это очень полезно.

Некоторые IDE даже поддерживают редактирование XQuery (например, Oxygen XML).

http://de.wikipedia.org/wiki/XQuery http://www.oxygenxml.com/

0 голосов
/ 03 апреля 2009

Ниже может быть полезна ссылка

http://www.totheriver.com/learn/xml/xmltutorial.html#5

...