ASP.Net/Network/URI

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Read XML data from URI

<%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  <HEAD>
    <title>Default</title>
    <script runat="server">
        protected System.Xml.XmlDocument xmlSource = new System.Xml.XmlDocument();
    private void LoadButton_Click(object sender, System.EventArgs e) {
      System.IO.Stream xmlDocStream = GetXmlDoc(XmlSourceTextBox.Text);
      if(xmlDocStream!=null) {
        xmlSource.Load(xmlDocStream);
        ResultText.Text=xmlSource.InnerXml;
      } else {
        ResultText.Text="Could not resolve the XML document.";
      }
    }
    public static System.IO.Stream GetXmlDoc(string xmlsource) {
      System.IO.Stream stream=null;
      if(xmlsource.StartsWith("<?xml") || xmlsource.StartsWith("<schema") ) {
        stream = new System.IO.MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(xmlsource));
      } else {
        try {
          System.Uri xmluri = new System.Uri(xmlsource);          
          if(xmluri.IsFile) {
            stream = new System.IO.FileStream(xmlsource, System.IO.FileMode.Open);
          } else {
            System.Net.HttpWebRequest request =  (System.Net.HttpWebRequest) System.Net.WebRequest.Create(xmluri);
            System.Net.WebResponse response = request.GetResponse();      
            stream = response.GetResponseStream();
          }
        }catch(Exception e) {
        }
      }
      return stream;
    }
    private void SaveButton_Click(object sender, System.EventArgs e) {
      if(xmlSource==null || xmlSource.InnerText=="") xmlSource.LoadXml(ResultText.Text);
      try {
        string path=FilePathText.Text.Substring(0, FilePathText.Text.LastIndexOf(@"\"));
        if(System.IO.Directory.Exists(path)) {
          try {
            xmlSource.Save(FilePathText.Text);
            SaveResultsText.Text=FilePathText.Text + " was saved successfully.";
          }catch(Exception saveErr) {
            SaveResultsText.Text=saveErr.ToString();
          }
        } else {
          SaveResultsText.Text="Directory Doesnt Exist, Try a different path.";
          FilePathText.Text="";
        }
      }catch(Exception saveError) {
        SaveResultsText.Text=saveError.ToString();
      }
    }
    </script>
  </HEAD>
  <body>
    <form id="Form1" method="post" runat="server">
      <asp:textbox id="XmlSourceTextBox" runat="server" Width="380" Height="162px" TextMode="MultiLine"></asp:textbox><br />
      <asp:button id="LoadButton" runat="server" Text="Load XML Document" OnClick="LoadButton_Click"></asp:button><br />
      <asp:TextBox id="ResultText" runat="server" Width="380" Height="194px" TextMode="MultiLine"></asp:TextBox><br />
      <asp:Button id="SaveButton" runat="server" Text="Save" OnClick="SaveButton_Click"></asp:Button><br />
      <asp:TextBox id="FilePathText" runat="server" Width="380"></asp:TextBox><br />
      <asp:TextBox id="SaveResultsText" runat="server" TextMode="MultiLine" Height="211px" Width="380px"></asp:TextBox>
    </form>
  </body>
</HTML>



Read XML from URI (VB)

<%@ Page language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  <HEAD>
    <title>Default</title>
    <script runat="server">
        Protected xmlSource As New System.Xml.XmlDocument()
        Private Sub LoadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Dim xmlDocStream As System.IO.Stream = GetXmlDoc(XmlSourceTextBox.Text)
            If Not (xmlDocStream Is Nothing) Then
                xmlSource.Load(xmlDocStream)
                ResultText.Text = xmlSource.InnerXml
            Else
                ResultText.Text = "Could not resolve the XML document."
            End If
        End Sub
        Public Shared Function GetXmlDoc(ByVal xmlsource As String) As System.IO.Stream
            Dim stream As System.IO.Stream = Nothing
            If xmlsource.StartsWith("<?xml") Or xmlsource.StartsWith("<schema") Then
                stream = New System.IO.MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(xmlsource))
            Else
                Try
                    Dim xmluri As New System.Uri(xmlsource)
                    If xmluri.IsFile Then
                        stream = New System.IO.FileStream(xmlsource, System.IO.FileMode.Open)
                    Else
                        Dim request As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(xmluri), System.Net.HttpWebRequest)
                        Dim response As System.Net.WebResponse = request.GetResponse()
                        stream = response.GetResponseStream()
                    End If
                Catch e As Exception
                End Try "not a valid uri
            End If
            Return stream
        End Function "GetXmlDoc
        Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            If xmlSource Is Nothing Or xmlSource.InnerText = "" Then
                xmlSource.LoadXml(ResultText.Text)
            End If
            Try
                Dim path As String = FilePathText.Text.Substring(0, FilePathText.Text.LastIndexOf("\"))
                If System.IO.Directory.Exists(path) Then
                    Try
                        xmlSource.Save(FilePathText.Text)
                        SaveResultsText.Text = FilePathText.Text + " was saved successfully."
                    Catch saveErr As Exception
                        SaveResultsText.Text = saveErr.ToString()
                    End Try
                Else
                    SaveResultsText.Text = "Directory Doesnt Exist, Try a different path."
                    FilePathText.Text = ""
                End If
            Catch saveError As Exception
                SaveResultsText.Text = saveError.ToString()
            End Try
        End Sub

    </script>
  </HEAD>
  <body>
    <form id="Form1" method="post" runat="server">
      <asp:textbox id="XmlSourceTextBox" runat="server" Width="380" Height="162px" TextMode="MultiLine"></asp:textbox><br/>
      <asp:button id="LoadButton" runat="server" Text="Load XML Document" OnClick="LoadButton_Click"></asp:button><br/>
      <asp:TextBox id="ResultText" runat="server" Width="380" Height="194px" TextMode="MultiLine"></asp:TextBox><br/>
      <asp:Button id="SaveButton" runat="server" Text="Save" OnClick="SaveButton_Click"></asp:Button><br/>
      <asp:TextBox id="FilePathText" runat="server" Width="380"></asp:TextBox><br/>
      <asp:TextBox id="SaveResultsText" runat="server" TextMode="MultiLine" Height="211px" Width="380px"></asp:TextBox>
    </form>
  </body>
</HTML>