Accueil > > > TRANSFORMER UN XML PAR PLUSIEUR XSLT CONSÉCUTIFS
TRANSFORMER UN XML PAR PLUSIEUR XSLT CONSÉCUTIFS
Information sur la source
Description
Si Vous êtes adepte du xml, il faut utiliser un langage sous-jacent. Le .net s'y prette assez bien.
Voici un code source qui permet d'appliquer plusieurs xsl consécutifs à une source xml.
Source
- Imports System.Xml
-
- Public Class XMLTransformer
- Private m_XSLPathfile
-
- 'XML source et cible
- Private m_XMLDocument As XmlDocument
- Private m_XMLTarget As XmlDocument
-
- Public Property XSLPathFile() As String
- Get
- Return m_XSLPathfile
- End Get
- Set(ByVal Value As String)
- m_XSLPathfile = Value
- End Set
- End Property
-
- Public Property XML() As String
- Get
- Return m_XMLTarget.OuterXml
- End Get
- Set(ByVal Value As String)
- m_XMLTarget = New XmlDocument()
- m_XMLTarget.LoadXml(Value)
- End Set
- End Property
-
-
- Public Function Transform(ByVal XSLFileName As String, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
- Dim xsl As Xsl.XslTransform
- Dim xmlpath As XPath.XPathNavigator
- Dim result As XmlReader
-
- xsl = New Xsl.XslTransform()
- xsl.Load(m_XSLPathfile & "\" & XSLFileName)
- xmlpath = m_XMLTarget.CreateNavigator
-
- result = xsl.Transform(xmlpath, args)
-
- Dim temp As String = ""
-
- Do While result.Read()
- temp = temp & result.ReadOuterXml
- Loop
- m_XMLTarget.LoadXml(temp)
- End Function
-
- Public Function Transform(ByVal XSLFileName As String, ByVal output As System.IO.TextWriter, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
- Dim xsl As Xsl.XslTransform
- Dim xmlpath As XPath.XPathNavigator
- Dim result As XmlReader
-
- xsl = New Xsl.XslTransform()
- xsl.Load(m_XSLPathfile & "\" & XSLFileName)
- xmlpath = m_XMLTarget.CreateNavigator
-
- xsl.Transform(xmlpath, args, output)
- xsl = Nothing
- End Function
-
-
- Protected Overrides Sub Finalize()
- m_XMLTarget = Nothing
-
- MyBase.Finalize()
- End Sub
-
- Public Sub New()
-
- End Sub
- Public Sub New(ByVal xml As String)
- Me.XML = xml
- End Sub
- End Class
Imports System.Xml
Public Class XMLTransformer
Private m_XSLPathfile
'XML source et cible
Private m_XMLDocument As XmlDocument
Private m_XMLTarget As XmlDocument
Public Property XSLPathFile() As String
Get
Return m_XSLPathfile
End Get
Set(ByVal Value As String)
m_XSLPathfile = Value
End Set
End Property
Public Property XML() As String
Get
Return m_XMLTarget.OuterXml
End Get
Set(ByVal Value As String)
m_XMLTarget = New XmlDocument()
m_XMLTarget.LoadXml(Value)
End Set
End Property
Public Function Transform(ByVal XSLFileName As String, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
Dim xsl As Xsl.XslTransform
Dim xmlpath As XPath.XPathNavigator
Dim result As XmlReader
xsl = New Xsl.XslTransform()
xsl.Load(m_XSLPathfile & "\" & XSLFileName)
xmlpath = m_XMLTarget.CreateNavigator
result = xsl.Transform(xmlpath, args)
Dim temp As String = ""
Do While result.Read()
temp = temp & result.ReadOuterXml
Loop
m_XMLTarget.LoadXml(temp)
End Function
Public Function Transform(ByVal XSLFileName As String, ByVal output As System.IO.TextWriter, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
Dim xsl As Xsl.XslTransform
Dim xmlpath As XPath.XPathNavigator
Dim result As XmlReader
xsl = New Xsl.XslTransform()
xsl.Load(m_XSLPathfile & "\" & XSLFileName)
xmlpath = m_XMLTarget.CreateNavigator
xsl.Transform(xmlpath, args, output)
xsl = Nothing
End Function
Protected Overrides Sub Finalize()
m_XMLTarget = Nothing
MyBase.Finalize()
End Sub
Public Sub New()
End Sub
Public Sub New(ByVal xml As String)
Me.XML = xml
End Sub
End Class
Conclusion
Si vous générez un html ou un xml avec plusieurs noeud de bases, mon code ne marche pas. Ce n'est pas très difficile à corriger.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|