簡體   English   中英

保存之前檢查文本是否已經在XML文件中

[英]Check if text is already in XML file before saving

這是我的保存方法;

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(txtAPI.Text) || string.IsNullOrEmpty(txtVerC.Text))
        {
            BTAPIConfirm.Visible = false;
        }
        else
        {
            BTAPIConfirm.Visible = true;
        }
    }

    public void button1_Click(object sender, EventArgs e)
    {

        if (string.IsNullOrEmpty(txtAPI.Text))
            {
            MessageBox.Show("There is nothing to enter", "Try again", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return;
        }
        else
        {
            Serialization info = new Serialization();
            info.APIKEY = txtAPI.Text;
            info.VCODE = txtVerC.Text;
            info.ID = Guid.NewGuid().ToString();
            list.Add(info);
            Serialization.SaveData(list, "data.XML");
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
    }





         private void whatIsThisToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

    // end of UCAPIn

    public List<Serialization> list = null;
    private void UCAPIn_Load(object sender, EventArgs e)
    {
        list = new List<Serialization>();

        if (File.Exists("data.XML"))

        {
            var doc = XDocument.Load("data.XML");

            foreach (XElement element in doc.Descendants("Serialization"))
            {
                list.Add(new Serialization()
                {
                    ID = element.Element("ID").Value,
                    APIKEY = element.Element("APIKEY").Value,
                    VCODE = element.Element("VCODE").Value
                });
            }
        }
    }
}

public class Serialization
{
    private string id;
    private string APIkey;
    private string VCode;

    public string ID
    {
        get { return id; }
        set { id = value; }
    }

    public string APIKEY
    {
        get { return APIkey; }
        set { APIkey = value; }
    }

    public string VCODE
    {
        get { return VCode; }
        set { VCode = value; }

    }

    public static void SaveData(List<Serialization> list, string Filename)
    {
        File.Delete(Filename);
        XmlSerializer sr = new XmlSerializer(list.GetType());
        TextWriter writer = new StreamWriter(Filename, true);
        sr.Serialize(writer, list);
        writer.Close();
    }
}

我想在這里做的是在保存XML之前檢查XML是否重復。

有人可以指出我正確的方向嗎? 一直在谷歌上尋找一點點,找不到我想要做的任何好的參考。

我的XML輸出的副本;

<ArrayOfSerialization>
<Serialization>
<ID>52a5900c-bdb8-4c63-93fc-10aff31b226f</ID>
<APIKEY>123</APIKEY>
<VCODE>123</VCODE>    
</Serialization>
<Serialization>
<ID>52c85576-97ce-491b-8cdc-b213bb487d15</ID>
<APIKEY>123</APIKEY>
<VCODE>123</VCODE>
</Serialization>
</ArrayOfSerialization>

要比較兩個XML,您應該首先定義定義相等性的內容。 元素或屬性的順序重要嗎?

然后,將XML轉換為字符串,因為比較兩個字符串很容易。

您可以編寫一個簡單的方法來從包含XML的字符串中刪除所有空格。

至於您的示例XML:您可以使用XElement方法搜索兩個<Serialization>元素,然后使用ToString()轉換為字符串。

XElementusing System.Xml.Linq; 當然,您也可以在System.Xml使用XMLElement類,但是以某種方式我更喜歡XElement。

畢竟,我不了解Serialization類。 我將文本解析為XML對象並使用XML庫,例如:

 XElement info = new XElement("ArrayOfSerialization",
    new XElement("Serialization", 
       new XElement("ID", new GUID()),
       new XElement("APIKEY", textAPI.Text),
       new XElement("VCODE", textVerC.Text)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM