xml es XmlDocument
foreach(XmlNode n in xml.ChildNodes) { if (n.NodeType == XmlNodeType.XmlDeclaration) n.ParentNode.RemoveChild(n); }
Private Function XMLtoDT(ByVal xml As String) As DataTable Dim dataSet As DataSet = New DataSet Dim reader As New System.Xml.XmlTextReader(New StringReader(xml)) dataSet.ReadXml(reader) If dataSet.Tables.Count = 0 Then Return New DataTable Else Return dataSet.Tables(0) End If End Function
Con este código, para la transformación solo necesitamos llamarla mandándole un string con el contenido, otro string con el contenido del xsl y “Me.GetType().Assembly.Evidence” y regresará un string con el contenido de la transformación.
Public Function ApplyXMLTransform(ByVal xslSDoc As String, ByVal xmlSDoc As String, ByVal evidence As System.Security.Policy.Evidence) As string Dim xmlDoc As XmlTextReader = New XmlTextReader(New StringReader(xmlSDoc)) Dim xslDoc As XmlTextReader = New XmlTextReader(New StringReader(xslSDoc)) Dim res As New Xml.XmlDocument Dim xslt As New Xml.Xsl.XslTransform xslt.Load(xslDoc, Nothing, evidence) res.Load(xslt.Transform(New Xml.XPath.XPathDocument(xmlDoc), Nothing, New Xml.XmlUrlResolver)) Return res.OuterText End Function
Private Function paco(ByVal xmlFile As String, ByVal xslFile As String) As String Dim archivo As String = "c:\temp.tmp" Dim temp As New Xml.XmlDocument Dim resolver As XmlUrlResolver = New XmlUrlResolver resolver.Credentials = System.Net.CredentialCache.DefaultCredentials Dim XSLT As Xsl.XslTransform = New Xsl.XslTransform XSLT.Load(xslFile, resolver) XSLT.Transform(archivo, archivo, resolver) Return ReadFile(archivo) End Function
Dim reader As New System.Xml.XmlTextReader(New System.IO.StringReader("<xmlaleer att1=""/>"))
Private Function GenerarXML(ByVal xmlStr As String, ByVal appendBuffer As String, ByRef strFileName As String) As String Dim xmlStrOriginal As String = xmlStr Dim xmlDoc As New XmlDocument Dim xnav As XPath.XPathNavigator Dim mngr As New XmlNamespaceManager(New NameTable) mngr.AddNamespace("ns", "http://www.dominio.com/Schemas/Documentos") Dim enc As XmlElement xmlDoc.LoadXml(xmlStr) enc = xmlDoc.SelectSingleNode("Nodo1/Nodo2/ns:nsNodo1/ns:nsNodo2", mngr) xmlDoc.LoadXml(enc.OuterXml) xnav = xmlDoc.CreateNavigator() Att1 = xnav.Evaluate("string(/*/@Att1)") Att2 = xnav.Evaluate("string(/*/@Att2)") Return xmlStr End Function
----------------------------------------------------------------------------- <summary> Transforma un xml en otro xml </summary> <param name="txt">un string que contiene el xml origen</param> <param name="xslFile">Archivo xsl para la transformacion</param> <returns>el xml transformado</returns> ----------------------------------------------------------------------------- Private Function xslTrans(ByVal txt As String, ByVal xslFile As String) As XmlDocument Dim xslTran As New XslTransform Dim oDocOut As New XmlDocument Dim oDoc As New XmlDocument Dim oNav As XPath.XPathNavigator Dim oXsl As XmlTextReader Try oXsl = New XmlTextReader(xslFile) oDoc.LoadXml(txt) oNav = oDoc.CreateNavigator() xslTran.Load(oXsl, Nothing, Me.GetType().Assembly.Evidence) oDocOut.Load(xslTran.Transform(oNav, Nothing, New Xml.XmlUrlResolver)) Catch ex As Exception Console.Write("Error:" + vbCr + ex.Message) End Try oDocOut.Normalize() Return oDocOut End Function
<x:out select="$usuarios/usuario[nombre=$param:nombre]"/>En este ejemplo se accedería al parámetro "nombre" pasado al jsp.
$foo $param: $header: $cookie: $initParam: $pageScope: $requestScope: $sessionScope: $applicationScope:
<link rel="alternate" type="application/rss+xml" title="Título RSS" href="http://host/ruta/a/fichero.rss" />
<link rel="alternate" type="application/atom+xml" href="http://www.dominio.com/atom/" title="Nombre sitio - Completo" /> <link rel="alternate" type="application/atom+xml" href="http://www.dominio.com/atom/seccion1/" title="Nombre sitio - Nombre seccion1" /> <link rel="alternate" type="application/atom+xml" href="http://www.dominio.com/atom/seccion2/" title="Nombre sitio - Nombre seccion2" />