0

基本的に、私はこの 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のコンテンツを取得できましたが、タグで始まり<string>タグで終わり</string>ます。その間のコンテンツはすべて、圧縮されたプレーン テキストです。

OuterXml 部分を削除するとReturn root.ToString、次のようになります。

この XML ファイルには、スタイル情報が関連付けられていないようです。ドキュメントツリーを以下に示します。 <string>System.Xml.XmlElement</string>

変換された RSS を、ノードのスタイルが設定された他の XML ファイルとして表示するにはどうすればよいでしょうか。(ただし、ブラウザーによって RSS としてレンダリングおよび表示されるのではなく、スタイルが設定された XML のみ)

4

2 に答える 2

1

まず、現在のコードでは、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
于 2012-06-08T18:17:56.623 に答える
0

ありがとう、実際、私の友人が小さな変更を手伝ってくれました。これは、As String を As XmlDocument に変更することです。それはそれをしました。だから「Public Function GroveHallFromRss() As XmlDocument」助けてくれてありがとう。

于 2012-06-08T18:55:03.777 に答える