How to Store data without using Database and how to retrieve them?

前端 未结 8 901
小鲜肉
小鲜肉 2020-12-11 08:10

I am parsing the html file to extract tabular information through column names. And I want like let user give the input for column name. And according to that column names t

相关标签:
8条回答
  • 2020-12-11 08:53

    Lots of people have been talking about XML, it's a good idea. However, if Linq is available for you, you shoudl really consider using Linq to XML instead of SAX/DOM parsing.

    Linq to XML makes it easier to parse, create and edit XML file compared to SAX and DOM parser. Using SAX/DOM parsing usually requires a lot of loops to get to the correct element or to navigate trough the nodes.

    Example taken from MSDN :
    Using DOM Parsing :

    XmlDocument doc = new XmlDocument();
    XmlElement name = doc.CreateElement("Name");
    name.InnerText = "Patrick Hines";
    XmlElement phone1 = doc.CreateElement("Phone");
    phone1.SetAttribute("Type", "Home");
    phone1.InnerText = "206-555-0144";        
    XmlElement phone2 = doc.CreateElement("Phone");
    phone2.SetAttribute("Type", "Work");
    phone2.InnerText = "425-555-0145";        
    XmlElement street1 = doc.CreateElement("Street1");        
    street1.InnerText = "123 Main St";
    XmlElement city = doc.CreateElement("City");
    city.InnerText = "Mercer Island";
    XmlElement state = doc.CreateElement("State");
    state.InnerText = "WA";
    XmlElement postal = doc.CreateElement("Postal");
    postal.InnerText = "68042";
    XmlElement address = doc.CreateElement("Address");
    address.AppendChild(street1);
    address.AppendChild(city);
    address.AppendChild(state);
    address.AppendChild(postal);
    XmlElement contact = doc.CreateElement("Contact");
    contact.AppendChild(name);
    contact.AppendChild(phone1);
    contact.AppendChild(phone2);
    contact.AppendChild(address);
    XmlElement contacts = doc.CreateElement("Contacts");
    contacts.AppendChild(contact);
    doc.AppendChild(contacts);
    

    Using Linq to XML :

    XElement contacts =
        new XElement("Contacts",
            new XElement("Contact",
                new XElement("Name", "Patrick Hines"),
                new XElement("Phone", "206-555-0144", 
                    new XAttribute("Type", "Home")),
                new XElement("phone", "425-555-0145",
                    new XAttribute("Type", "Work")),
                new XElement("Address",
                    new XElement("Street1", "123 Main St"),
                    new XElement("City", "Mercer Island"),
                    new XElement("State", "WA"),
                    new XElement("Postal", "68042")
                )
            )
        );
    

    Easier to do and much more clear.

    Edit:
    Save the XML tree to contacts.xml :

    // using the code above
    contact.Save("contacts.xml");
    

    Load the contacts.xml file :

    //using the code above
    XDocument contactDoc = XDocument.Load("contacts.xml"); 
    

    To update an element of the tree there is a few functions in the doc that can do it depending on what you want to do

    0 讨论(0)
  • 2020-12-11 08:53

    You can use an XML files as an alternative, though using SQLite seems much more preferable. XML facilities are located under a System.Xml namespace. You can use XMLReader/Writer class to manage an information in you files. There are some good usage examples on the MSDN page.

    0 讨论(0)
  • 2020-12-11 08:55

    Use a database. If you don't want the hassle of setting up a client/sever architecture, use SQLite, which has several .Net incarnations, or SQL Server Express.

    0 讨论(0)
  • 2020-12-11 08:59

    If it's just ten columns how about storing as a delimited string in App.Config?

    0 讨论(0)
  • 2020-12-11 09:06

    Maybe you could serialize a DataTable, but keep in mind if you fill it with data this can get large and take serious amount of time to serialize or deserialize. If data is stored otherwise, you might want to store column info in a config/project file.

    HTH, -sa

    0 讨论(0)
  • 2020-12-11 09:13

    If you've got-to-choose but a database; then I'd go with Xml, use SAX to parse when file goes larger.

    See how to Manipulate XML File Data Using C#

    --EDIT--

    This is in response to your comment. Lets assume that you have a screen with following controls:

    1. TextBox as txtColumnName; when user provides a column name and click on the add button, save it as an xml attribute.
    2. ComboBox as cbxColumns; select the current column
    3. TextBox as txtValue; when this is provided then save the value in the column selected in the Columns combo.
    4. Add Button; you can add delete, update buttons as well.

    Please go through the example link, it would help you add/remove/update nodes at runtime. You can comeup with your XmlDatabaseWrapper class that would wrap around all of the CRUD operations.

    0 讨论(0)
提交回复
热议问题