使用linq将XML元素连接到C#中的Class属性

时间:2012-09-09 11:51:56

标签: c# xml linq

我正在学习c#!我想知道是否有一种方法来定义表示XML元素的Class属性以及如何从XML文件中读取属性!

2 个答案:

答案 0 :(得分:3)

您当然可以声明XElement类型的属性:

public class Foo
{
    public XElement Bar { get; set; }
}

您可以使用以下代码从XML文件中读取它:

XDocument doc = XDocument.Load("file.xml");
Foo foo = new Foo();
foo.Bar = doc.Root; // The root element of the file...

显然你可以得到其他元素,例如

foo.Bar = doc.Descendants("SomeElementName").First();

......但是如果没有更具体的问题,很难给出更具体的答案。

答案 1 :(得分:2)

假设您有这样的Xml文件:

<Root>
<ExampleTag1>Hello from Minsk.</ExampleTag1>
<ExampleTag2>Hello from Moskow.</ExampleTag2>
...
</Root>

您可以创建以下内容:

public class Class1 : IDisposable
    {
        private string filePath;
        private XDocument document;

        public Class1(string xmlFilePath)
        {
            this.filePath = xmlFilePath;
            document = XDocument.Load(xmlFilePath);
        }

        public XElement ExampleTag1
        {
            get
            {
                return document.Root.Element("ExampleTag1");
            }
        }

        public void Dispose()
        {
            document.Save(filePath);
        }
    }

然后使用它:

new Class1(filePath).ExampleTag1.Value;