Whats the quickest way to convert a doc like:
<customermodel:Customer>
<creditCards>
<cardNumber>@0</cardNumber>
<provider>@HSBC</provider>
<xsi:type>@customermodel:CreditCard</xsi:type>
23242552
</creditCards>
.
.
So that the elements with @ become attributes for the parent element.
ie get to:
<customermodel:Customer>
<creditCards cardNumber="0" provider="HSBC" xsi-type="customermodel:CreditCard>
232323232
</creditCards>
.
.
Using a dom? or Sax parser or manually? and i can move the @ into the <>'s
From stackoverflow
-
The best way to work directly with XML data is to use XQuery. It is not the easiest thing to learn, but if you work a lot with XML it is very useful.
Some IDE even support XQuery editing (like Oxygen XML).
http://de.wikipedia.org/wiki/XQuery http://www.oxygenxml.com/
-
Below link might be helpful
-
I think XSLT is the way to go.
More details here
And use a SAX parser, unless you have very good reasons.
-
If you decide to use XSLT, it will look something like
<!-- 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>
0 comments:
Post a Comment