1

我有一个类有一些属性,其中一个属性想要获取或设置 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>

设置和获取此 xml 表达式的正确变量类型是什么?

我班级的财产是这样的:

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

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

4

3 回答 3

2

您可以只使用纯字符串或XDocument

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

于 2012-12-05T18:26:02.567 回答
0

one of the appropriate way is to save all new tab as a separate file and have new tabs address in our property to open and save XML document.

于 2012-12-06T10:35:08.280 回答
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)
    // ...

顺便说一句DesignerItems,您在 xml 中有拼写错误 -元素没有结束标记。并且值有错别字false

于 2012-12-05T18:47:06.223 回答