2

ドキュメントを次のように変換する最も簡単な方法は何ですか:

<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>
        .
        .

ドムを使う?またはSaxパーサーまたは手動?@ を <> に移動できます

4

4 に答える 4

2

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>
于 2009-05-10T14:50:26.277 に答える
1

XML データを直接操作する最善の方法は、XQuery を使用することです。学ぶのは簡単ではありませんが、XML を頻繁に使用する場合は非常に役立ちます。

一部の IDE では、XQuery 編集 (Oxygen XML など) もサポートされています。

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

于 2009-04-03T14:10:30.907 に答える
1

XSLT が最適な方法だと思います。

詳細はこちら

また、よほどの理由がない限り、SAX パーサーを使用してください。

于 2009-04-03T14:14:54.717 に答える
0

以下のリンクが参考になるかもしれません

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

于 2009-04-03T14:10:31.903 に答える