xml作为我班级的财产

时间:2012-12-05 18:23:55

标签: c# xml

我有一个类有一些属性,其中一个属性想要获取或设置XML文本,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <SaveCode>QuiddityVer</SaveCode>
  <IsMainProject>fals</IsMainProject>
  <DesignerItems>
    <DesignerItem>
      <Quiddity>Play</Quiddity>
      <Name>Node_Play1</Name>            
      <LoopBodyInDesignerCanvas />
    </DesignerItem>   
</Root>

set的适当变量类型是什么,并获得此xml表达式?

我班上的财产是这样的:

privte String _myxmlExpresion;
public String myxmlExpresion
        {
            get
            {
                return _myxmlExpresion;
            }
            set
            {
                _myxmlExpresion= value;
            }
        }

我的项目是multiTab,每个选项卡都有DesignerItems来显示其中的一些节点(某些东西,如Visual DialPlan或Visual VXML Designer),而某些节点具有在我单击时打开一个新选项卡的属性,并且我在XML文件中保存并打开此选项卡,但在这里我不希望这个新选项卡添加到额外的xml文件,我想将它保存在我的属性中。

3 个答案:

答案 0 :(得分:2)

您可以使用纯字符串或XDocument

或者,您也可以使用XmlDocument。 (感谢msmucker0527)

答案 1 :(得分:0)

创建用于保存xml数据的类:

public class Foo
{
    public string SaveCode { get; set; }
    public bool IsMainProject { get; set; }
    public List<DesignerItem> DesignerItems { get; set; }
}

public class DesignerItem
{
    public string Quiddity { get; set; }
    public string Name { get; set; }
    public string LoopBodyInDesignerCanvas { get; set; }
}

解析你的xml:

XElement root = XElement.Parse(xml);
var foo = new Foo()
{
    SaveCode = (string)root.Element("SaveCode"),
    IsMainProject = (bool)root.Element("IsMainProject"),
    DesignerItems = root.Element("DesignerItems")
                        .Elements("DesignerItem")
                        .Select(di => new DesignerItem()
                        {
                            Quiddity = (string)di.Element("Quiddity"),
                            Name = (string)di.Element("Name"),
                            LoopBodyInDesignerCanvas = (string)di.Element("LoopBodyInDesignerCanvas")
                        }).ToList()
};

将已解析的对象存储为类型Foo的属性(当然,我认为有一个更好的数据名称,您的xml保存)。这将为您提供强类型语言的所有优势:

if (yourObject.Foo.IsMainProject)
    // ...

BTW 你在xml中有拼写错误 - DesignerItems元素没有结束标记。并且false值存在拼写错误。

答案 2 :(得分:0)

其中一种合适的方法是将所有新标签保存为单独的文件,并在我们的属性中使用新的标签地址来打开和保存XML文档。