2012-06-08 2 views
0

기본적으로이 RSS 피드가 준비되어 있습니다. 나는 다음에 의해을 XmlDocument에 RSS를 변환 :RSS를 일반 XML로 변환 할 때 XML을 올바르게 표시하는 방법

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>

그래서 나는 스타일 노드와 다른 XML 파일로 변환 된 RSS를 표시 할 수 있는지 궁금하네요. (브라우저에서는 RSS로 렌더링되지 않지만 스타일이 지정된 XML 만 가능)

답변

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 

그러나 문서를 들여 쓰는 것에 대한 질문에 대해서는 대답하지 않습니다. 이를 위해 가장 쉬운 방법은 스타일 시트를 적용하는 것입니다.

<?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> 

당신은 thusly 히 코드에서 XSLT 스크립트를 적용 할 수 있습니다 : 다음 XSLT 스크립트는 꽤 XML 문서를 만들 것입니다

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 
+0

감사합니다. 실제로, 내 친구는 작은 변화로 나를 도왔습니다. 즉, As String을 As XmlDocument로 변경합니다. 그게 그랬어. 그래서 "Public Function GroveHallFromRss() As XmlDocument"당신을 도와 줘서 고마워. – eastboundr

0

감사합니다, 실제로 내 친구는 작은 변화에 저를 도왔다. 즉, As String을 As XmlDocument로 변경합니다. 그게 그랬어. 그래서 "Public Function GroveHallFromRss() As XmlDocument"당신을 도와 줘서 고마워.