Форма aspx в XML-файл - PullRequest
       3

Форма aspx в XML-файл

0 голосов
/ 27 апреля 2011

В основном я пытаюсь:

  1. Поймать отправку формы;
  2. Сохранить ее в файл XML;
  3. Отправить на другой сервер.

Моя главная проблема - не удается найти много информации о XMLBuilder .Эта следующая ссылка выглядит как что-то, что мне нужно, но я могу использовать только XML Builder: Создание формы контакта в Visual Studio ASPX и сохранение в файл XML при нажатии SUBMIT

Мой код какследует:

Default.aspx:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="ToXMLApp.ToXMLForm" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>

    <form id="ToXMLForm" runat="server" defaultbutton="Submit">
    <div>
        <asp:Label runat="server">Firstname</asp:Label>&emsp;<asp:TextBox ID="Firstname" runat="server"></asp:TextBox><br />
        <asp:Label runat="server">Surname</asp:Label>&emsp;<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <asp:Button ID="Submit" runat="server" Text="Submit" OnClick="Submit_Click" />
    </div>
    </form>

</body>
</html>

Default.aspx.vb:

Protected Sub Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs)

    // XMLBuilder new xml file
    // save form results as xml fields
    // save xml file
    // send XML file (this is not as important atm)
    ToXMLForm.InnerHTML? // how do I retrieve inputs?

End Sub

Ответы [ 3 ]

1 голос
/ 27 апреля 2011
public void Submit_Click(object sender, System.EventArgs e)
{
   //Get the inputs
   var name = Firstname.Text;
   var surname = TextBox1.Text;

   //Now you transform the data as the example of the link you showed
   XmlWriterSettings settings = new XmlWriterSettings();
   settings.Indent = true;
   settings.IndentChars = ("    ");

   var filepath = "data.xml";

   using (XmlWriter writer = XmlWriter.Create(filepath, settings))
   {
       // Write XML data.
       writer.WriteStartElement("data");
       writer.WriteElementString("name", name);
       writer.WriteElementString("surname", surname);
       writer.WriteEndElement();
       writer.Flush();
   }

   //Send XML file
   FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(FTPAddress + "/" + 
   Path.GetFileName(filePath));
   request.Method = WebRequestMethods.Ftp.UploadFile;
   request.Credentials = new NetworkCredential(username, password);
   request.UsePassive = true;
   request.UseBinary = true;
   request.KeepAlive = false;

   FileStream stream = File.OpenRead(filePath);
   byte[] buffer = new byte[stream.Length];
   stream.Read(buffer, 0, buffer.Length);
   stream.Close();

   Stream reqStream = request.GetRequestStream();
   reqStream.Write(buffer, 0, buffer.Length);
   reqStream.Close();
}

Включить библиотеку System.Net.

Я написал в блокноте, не скомпилировал, так что простите, если есть ошибка, но это путь.

1 голос
/ 27 апреля 2011

Я бы проанализировал форму и восстановил бы, используя LINQ to XML. Я знаю, что это не очень помогает, но вам, вероятно, лучше ориентироваться в этом направлении (XDocument, XElement и т. Д.) И работать с этими типами данных .NET объектно-ориентированным способом, чем полагаться на конкретную реализацию ( как сказал @John Saunders, не совсем уверенный в XMLBuilder), чтобы удовлетворить потребности вашего бизнеса. Иногда действительно полезно работать под капотом.

0 голосов
/ 28 апреля 2011

Спасибо всем за помощь, это было высоко оценено. Вот код, который заработал:

//Create the XDoc object
Dim XMLDoc As XDocument

XMLDoc = New XDocument(
    New XDeclaration("1.0", "utf-8", "yes"),
        New XElement("user",
            New XElement("details",
                New XElement("firstname", Firstname.Text),
                    New XElement("surname", Lastname.Text)
            )
        )
    )

    //Save test file
    XMLDoc.Save("C:\test.xml")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...