read parse node delete create javascript xml xsd xml-parsing cognos

parse - string to xml javascript



Conversión de un archivo de esquema XML de Cognos a XML utilizando código JavaScript (1)

Este Xslt elimina todos los metadatos de esquema de los informes arbitrarios de Cognos ( método de salida Xml ) y crea elementos de resultados con nombres extraídos de los metadatos:

<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns="http://tempuri.org/" xmlns:cog="http://developer.cognos.com/schemas/xmldata/1/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:template match="//comment()" /> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="cog:dataset"> <rows> <xsl:apply-templates /> </rows> </xsl:template> <xsl:template match="cog:metadata"> <xsl:apply-templates /> </xsl:template> <xsl:template match="cog:item"> <xsl:apply-templates /> </xsl:template> <xsl:template match="@name | @type | @length | @precision" /> <xsl:template match="cog:data"> <xsl:apply-templates /> </xsl:template> <xsl:template match="cog:row"> <row> <xsl:apply-templates /> </row> </xsl:template> <xsl:template match="cog:value"> <xsl:variable name="currentposition" select="count(./preceding-sibling::cog:value)+1" /> <xsl:variable name="currentname" select="//cog:metadata/cog:item[$currentposition]/@name" /> <xsl:element name="{$currentname}"> <xsl:apply-templates /> </xsl:element> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>

Sin embargo, si desea que Cognos aplique una transformación del lado del servidor , tendrá que elegir el método de salida XHTML que facilitará la transformación, ya que cada campo llevará su nombre real en lugar de valor .

Encontré muchos "conversores" en línea que harán esto por usted, pero no he podido encontrar ningún código fuente que pueda implementar fácilmente. Me preguntaba si alguien sería tan amable de darme sugerencias o incluso proporcionarme el código que hará esta tarea para mí. Estoy tratando de convertir a XML por lo que será más fácil de analizar.

Estoy intentando convertir esto (esquema XML de Cognos) ...

<?xml version="1.0" encoding="utf-8" ?> - <dataset xmlns="http://developer.cognos.com/schemas/xmldata/1/" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"> - <!-- <dataset xmlns="http://developer.cognos.com/schemas/xmldata/1/" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://developer.cognos.com/schemas/xmldata/1/ xmldata.xsd" > --> - <metadata> <item name="ROOT_NODE_ID" type="xs:decimal" precision="38" /> <item name="LEVEL1_ID" type="xs:string" length="2002" /> <item name="LEVEL1_NAME" type="xs:string" length="512" /> <item name="LEVEL2_ID" type="xs:string" length="2002" /> <item name="LEVEL2_NAME" type="xs:string" length="512" /> <item name="LEVEL3_ID" type="xs:string" length="2002" /> <item name="LEVEL3_NAME" type="xs:string" length="512" /> <item name="LEVEL4_ID" type="xs:string" length="2002" /> <item name="LEVEL4_NAME" type="xs:string" length="512" /> <item name="LEVEL5_ID" type="xs:string" length="2002" /> <item name="LEVEL5_NAME" type="xs:string" length="512" /> <item name="LEVEL6_ID" type="xs:string" length="2002" /> <item name="LEVEL6_NAME" type="xs:string" length="512" /> <item name="LEVEL7_ID" type="xs:string" length="2002" /> <item name="LEVEL7_NAME" type="xs:string" length="512" /> <item name="LEVEL8_ID" type="xs:string" length="2002" /> <item name="LEVEL8_NAME" type="xs:string" length="512" /> <item name="LEVEL9_ID" type="xs:string" length="2002" /> <item name="LEVEL9_NAME" type="xs:string" length="512" /> <item name="LEVEL10_ID" type="xs:string" length="2002" /> <item name="LEVEL10_NAME" type="xs:string" length="512" /> </metadata> - <data> - <row> <value>5</value> <value>5</value> <value>Global Root</value> <value>41</value> <value>Company</value> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> </row> - <row> <value>5</value> <value>5</value> <value>Global Root</value> <value>41</value> <value>Company</value> <value>101590</value> <value>Customer</value> <value>101591</value> <value>Customer -All Sites</value> <value>125083</value> <value>Site 1</value> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> <value xs:nil="true" /> </row> </data> </dataset>

Para esto (XML) ....

<?xml version="1.0" encoding="UTF-8"?> <rows> <row> <ROOT_NODE_ID>5</ROOT_NODE_ID> <LEVEL1_ID>5</LEVEL1_ID> <LEVEL1_NAME>Global Root</LEVEL1_NAME> <LEVEL2_ID>41</LEVEL2_ID> <LEVEL2_NAME>Company</LEVEL2_NAME> <LEVEL3_ID></LEVEL3_ID> <LEVEL3_NAME></LEVEL3_NAME> <LEVEL4_ID></LEVEL4_ID> <LEVEL4_NAME></LEVEL4_NAME> <LEVEL5_ID></LEVEL5_ID> <LEVEL5_NAME></LEVEL5_NAME> <LEVEL6_ID></LEVEL6_ID> <LEVEL6_NAME></LEVEL6_NAME> <LEVEL7_ID></LEVEL7_ID> <LEVEL7_NAME></LEVEL7_NAME> <LEVEL8_ID></LEVEL8_ID> <LEVEL8_NAME></LEVEL8_NAME> <LEVEL9_ID></LEVEL9_ID> <LEVEL9_NAME></LEVEL9_NAME> <LEVEL10_ID></LEVEL10_ID> <LEVEL10_NAME></LEVEL10_NAME> </row> <row> <ROOT_NODE_ID>5</ROOT_NODE_ID> <LEVEL1_ID>5</LEVEL1_ID> <LEVEL1_NAME>Global Root</LEVEL1_NAME> <LEVEL2_ID>41</LEVEL2_ID> <LEVEL2_NAME>Company</LEVEL2_NAME> <LEVEL3_ID>101590</LEVEL3_ID> <LEVEL3_NAME>Customer</LEVEL3_NAME> <LEVEL4_ID>101591</LEVEL4_ID> <LEVEL4_NAME>Customer -All Sites</LEVEL4_NAME> <LEVEL5_ID>125083</LEVEL5_ID> <LEVEL5_NAME>Site 1</LEVEL5_NAME> <LEVEL6_ID></LEVEL6_ID> <LEVEL6_NAME></LEVEL6_NAME> <LEVEL7_ID></LEVEL7_ID> <LEVEL7_NAME></LEVEL7_NAME> <LEVEL8_ID></LEVEL8_ID> <LEVEL8_NAME></LEVEL8_NAME> <LEVEL9_ID></LEVEL9_ID> <LEVEL9_NAME></LEVEL9_NAME> <LEVEL10_ID></LEVEL10_ID> <LEVEL10_NAME></LEVEL10_NAME> </row> </rows>