Używam kodu:
XmlDocument xdoc = new XmlDocument();
xdoc.Load("plik.xml");
Jak dodać do tego obsługę braku pliku? (chciałbym wyświetlić błąd i utworzyć plik).
Używam kodu:
XmlDocument xdoc = new XmlDocument();
xdoc.Load("plik.xml");
Jak dodać do tego obsługę braku pliku? (chciałbym wyświetlić błąd i utworzyć plik).
File.Exists("plik.xml")
Otwieram też pliki z sieci:
xdoc.Load("http://abc.pl/xml.php");
A visual studio przy File.Exists("http://abc.pl/xml.php") informuje mnie o błędzie. Jak wtedy obsłużyć błąd/zapobiec mu?
Musisz wysłać żądanie o ten plik i dowiedzieć się co serwer odpowie (np. 404, nie istnieje taki zasób). Klasa WebRequest na przykład się tutaj nada. Jeśli zasób istnieje to od razu ten plik pobierzesz, więc 2 pieczenie przy jednym ogniu.
A jak użyć WebRequest? Znalazłem w msdn kod:
using System;
using System.IO;
using System.Net;
using System.Text;
namespace Examples.System.Net
{
public class WebRequestPostExample
{
public static void Main ()
{
// Create a request using a URL that can receive a post.
WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
Ale u mnie vs nie znajduje klasy i jest błąd przy deklaracji obiektu.
A masz na pewno using System.Net? Ta klasa była nawet w .net 1.1 (choć nie tak funkcjonalna wtedy jak teraz o ile pamiętam).
Racja, nie miałem tego. A jak używać tej klasy (sprawdzić, czy można normalnie otworzyć plik xml), bo pierwszy raz z niej korzystam?
Ta klasa wysyła żądanie http, więc zasada działania jest taka sama jak protokołu http. Przygotowujesz żądanie (typ GET/POST), podajesz adres zasobu, następnie wysyłasz żądanie (GetResponse) i czekasz na odpowiedz. Przykłady są na msdn. Szczególy odpowiedzi (kod odpowiedzi, np. 404 i jej treść) są właściwościami obiektu uzyskanego z GetResponse. Możesz chcieć zrzutować to na HttpResponse, żeby dostać szczegółowe informacje na temat odpowiedzi typu HTTP.