0

我正在为 Xamarin iOS iPad App 制作一个提问者应用程序。当有人打开应用程序时,会显示类别,然后从类别中打开子类别,从子类别中打开问题列表。当问题打开时,它将显示一个包含选项列表的详细信息页面和一个用于添加问题答案的文本框。

现在的问题是,当打开问题的详细信息页面并保存该特定问题的答案时。列表中的答案和选择需要针对该问题保存到 XML 文件中。

我怎样才能做到这一点?

<?xml version="1.0" encoding="utf-16"?>
<Categories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <SubCategories>
    <Question QuestionTitle="I am question101" SubCategories="100" CategoryId="facilityId">
        <Checklists_Items Checklist_ItemTitle="title101" Checklist_ItemId="999" Checklist_ItemQuestion="question101" />
    </Question>
  </SubCategories>
</Categories>
4

1 回答 1

0

我通过执行以下操作实现了这一点:使用保存值所需的所有必需属性创建一个类文件,然后设置该类的属性值并将具有值的类对象序列化为 XML 并将序列化的 XML 字符串写入 XML文件。

下面是对象类的示例代码。

using System;
using System.Collections.Generic;
using System.Xml.Serialization;

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[XmlTypeAttribute(AnonymousType = true)]
//[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]

public partial class QuestionsCollection
{
    private string _Question;
    private string _Answer;

    public QuestionsCollection()
    {
    }

    /// <remarks/>
    [XmlAttributeAttribute()]
    public string Question
    {
        get
        {
            return this._Question;
        }
        set
        {
            this._Question = value;
        }
    }

    /// <remarks/>
    [XmlArrayItemAttribute("Questions", IsNullable = false)]
    public string Answer
    {
        get
        {
            return this._Answer;
        }
        set
        {
            this._Answer = value;
        }
    }
}

序列化对象类的代码:

string question = "This is first question?";
string answer = "Answer to first question";

var path1 = Path.Combine(Directory, _path);
//Setting Values
            var c = new QuestionsCollection { Question = question, Answer = answer };

//Serialization of Object Class.    
            var s = new XmlSerializer(typeof(QuestionsCollection));
            var sb = new StringBuilder();

            using (var writer = new StringWriter(sb))
            {
                try
                {
                    s.Serialize(writer, c);
//Write Serialized String to file.
                    File.WriteAllText(path1, sb.ToString(), Encoding.UTF8);

                }
                catch (Exception e)
                {

                }
            }
于 2017-01-25T11:46:51.000 回答