Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)归海一刀
published in(发表于) 2014/3/20 5:15:39
利用XSLT来换XML的根_[XML教程]

利用XSLT来换XML的根_[XML教程]

写程序需要换XML的根,感觉很不便,于是写了一个函数,大致思路及实现如下:

  首先觉得利用XSLT还能过滤一些东西,然后再发送回客户端,所以决定采用XSLT
  然后就是尝试写一个换根的XSL,如下

















大致意思是,解析一个XML中的所有结点及属性,如果非根就直接拷贝,否则就查看是否存在子结点及属性。具体资料请参照MSXML的SDK文档。


  然后写一个函数,使得NEWNODENAME可以指定:


这段代码为VB.Net中的实现,ASP中实现时需要注意对象附值需要用Set,还有返回值的问题


Public Function ChangeXmlRootNodeName(ByRef oXml As MSXML2.DOMDocument, ByVal name As String) As String
If oXml Is Nothing Then
Return ""
End If
Dim sXslt As String
sXslt = "" & vbCrLf
sXslt = sXslt & "" & vbCrLf
sXslt = sXslt & "" & vbCrLf
sXslt = sXslt & vbCrLf
sXslt = sXslt & "" & vbCrLf
sXslt = sXslt & "<" & name & ">"" & vbCrLf"
sXslt = sXslt & " " & vbCrLf
sXslt = sXslt & "" & vbCrLf
sXslt = sXslt & "
" & vbCrLf
sXslt = sXslt & vbCrLf
sXslt = sXslt & "" & vbCrLf
sXslt = sXslt & " " & vbCrLf
sXslt = sXslt & " " & vbCrLf
sXslt = sXslt & " " & vbCrLf
sXslt = sXslt & "
"" & vbCrLf"
sXslt = sXslt & "
"" & vbCrLf"
sXslt = sXslt & vbCrLf
sXslt = sXslt & "
" & vbCrLf


Dim oXsl As New MSXML2.DOMDocument
oXsl.async = False
oXsl.resolveExternals = False
oXsl.loadXML(sXslt)


Dim sXml As String


sXml = oXml.transformNode(oXsl)


sXml = AddXmlHeader(sXml)


 sXsl = Nothing


Return sXml
End Function



  还有,当然你也可以实现生成那个XSL的XSL文件,这就要看你如何设计了。







If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759