Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在将RSS转换为纯XML时正确显示XML_Xml_Vb.net_Rss - Fatal编程技术网

如何在将RSS转换为纯XML时正确显示XML

如何在将RSS转换为纯XML时正确显示XML,xml,vb.net,rss,Xml,Vb.net,Rss,所以基本上,我手头有这个RSS提要。我通过以下方式将RSS转换为XmlDocument: Public Function GroveHallFromRss() As String Dim webClient As System.Net.WebClient = New System.Net.WebClient() Dim ourUrl As String = "http://abc.123.org/RSSSyndicator.aspx?type=N&ran

所以基本上,我手头有这个RSS提要。我通过以下方式将RSS转换为XmlDocument:

 Public Function GroveHallFromRss() As String
        Dim webClient As System.Net.WebClient = New System.Net.WebClient()
        Dim ourUrl As String = "http://abc.123.org/RSSSyndicator.aspx?type=N&range=currentyear&expire=Y&location=2-7-165&rssid=18"
        Dim stream AS Stream
    stream = webClient.OpenRead(ourUrl)
    Dim xmlDocument AS XmlDocument = new XmlDocument()
        xmlDocument.Load(stream)

        Dim root As XmlNode = xmlDocument.DocumentElement
    Return root.OuterXml.ToString

    End Function
有了上面的内容,我可以获得RSS的内容,但它以
标记开始,以
标记结束。中间的内容都是压缩在一起的纯文本

如果删除OuterXml部分,只返回root.ToString,我会得到以下结果:

 Public Function GroveHallFromRss() As String
        Dim webClient As System.Net.WebClient = New System.Net.WebClient()
        Dim ourUrl As String = "http://abc.123.org/RSSSyndicator.aspx?type=N&range=currentyear&expire=Y&location=2-7-165&rssid=18"
        Dim stream AS Stream
    stream = webClient.OpenRead(ourUrl)
    Dim xmlDocument AS XmlDocument = new XmlDocument()
        xmlDocument.Load(stream)

        Dim root As XmlNode = xmlDocument.DocumentElement
    Return root.OuterXml.ToString

    End Function
此XML文件似乎没有任何关联的样式信息 用它。文档树如下所示。
System.Xml.xmlement


因此,我想知道如何将转换后的RSS显示为具有节点样式的任何其他XML文件。(但不是以RSS的形式呈现和由浏览器显示,而只是样式化的XML)

首先,在当前代码中,没有必要将XML加载到XmlDocument对象中。例如,下面的操作与此相同:

Public Function GroveHallFromRss() As String
    Dim webClient As System.Net.WebClient = New System.Net.WebClient()
    Dim ourUrl As String = "http://abc.123.org/RSSSyndicator.aspx?type=N&range=currentyear&expire=Y&location=2-7-165&rssid=18"
    Dim streamReader As StreamReader = New StreamReader(webClient.OpenRead(ourUrl))
    Return streamReader.ReadToEnd()
End Function
但是,这并不能回答您关于正确缩进文档的问题。要做到这一点,我认为最简单的方法是应用样式表。以下XSLT脚本将使XML文档变得漂亮:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <xsl:copy-of select="."/>
  </xsl:template>
</xsl:stylesheet>

您可以在代码中应用XSLT脚本,因此:

Public Function GroveHallFromRss() As String
    Dim webClient As System.Net.WebClient = New System.Net.WebClient()
    Dim ourUrl As String = "http://abc.123.org/RSSSyndicator.aspx?type=N&range=currentyear&expire=Y&location=2-7-165&rssid=18"
    Dim reader as XmlTextReader = new XmlTextReader(webClient.OpenRead(ourUrl))
    Dim transformer As XslCompiledTransform = New XslCompiledTransform()
    transformer.Load("<?xml version=""1.0"" encoding=""utf-8""?><xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform""><xsl:output method=""xml"" indent=""yes""/><xsl:strip-space elements=""*""/><xsl:template match=""/""><xsl:copy-of select="".""/></xsl:template></xsl:stylesheet>")
    Dim settings As XmlWriterSettings = transformer.OutputSettings
    Dim outputStream As MemoryStream = New MemoryStream()
    Dim xmlWriter As XmlWriter = xmlWriter.Create(outputStream, settings)
    transformer.Transform(reader, Nothing, xmlWriter)
    outputStream.Position = 0
    Dim streamReader As StreamReader = New StreamReader(outputStream)
    Return = streamReader.ReadToEnd()
End Function
Public函数将fromrss()作为字符串
Dim webClient As System.Net.webClient=新系统.Net.webClient()
将URL设置为字符串=”http://abc.123.org/RSSSyndicator.aspx?type=N&range=currentyear&expire=Y&location=2-7-165&rssid=18“
Dim reader as XmlTextReader=新的XmlTextReader(webClient.OpenRead(ourUrl))
将转换器设置为XslCompiledTransform=新XslCompiledTransform()
变压器负载(“”)
Dim设置为XmlWriterSettings=transformer.OutputSettings
Dim outputStream As MemoryStream=新的MemoryStream()
Dim xmlWriter As xmlWriter=xmlWriter.Create(输出流,设置)
transformer.Transform(读取器、Nothing、xmlWriter)
outputStream.Position=0
Dim streamReader As streamReader=新streamReader(outputStream)
Return=streamReader.ReadToEnd()
端函数

谢谢,实际上我的朋友帮了我一点小忙。正在将字符串更改为XmlDocument。成功了。所以“Public Function fromrss()As XmlDocument”非常感谢您的帮助。

谢谢,实际上我的朋友帮了我一个小小的改变。正在将字符串更改为XmlDocument。成功了。所以“Public Function fromrss()As XmlDocument”感谢您的帮助。