LINQ TO XML

 XML:

< wordbook >

  <item>

    <word>resistance</word>

    <trans><![CDATA[n. 阻力;电阻;抵抗;反抗;抵抗力]]></trans>

    <phonetic><![CDATA[[ri'zistəns]]]></phonetic>

    <tags></tags>

    <progress>1</progress>

</item><item>   

   <word>repository</word>

    <trans><![CDATA[n. 贮藏室,仓库;知识库;智囊团]]></trans>

    <phonetic><![CDATA[[ri'pɔzitəri]]]></phonetic>

    <tags></tags>

    <progress>1</progress>

</item>

</ wordbook >

 

返回查询值:

string path = Application.StartupPath + @"\Dic.xml";

string word = this.textBox1.Text;

XDocument xDoc = XDocument.Load(path);

var q = from fdlink in xDoc.Descendants("item")

        where fdlink.Element("word").Value.Equals("word")

        select new

        {

            word = fdlink.Element("word").Value,

            trans = fdlink.Element("trans").Value

        };

 

string result = "";

 

foreach (var wd in q)

{

    result = wd.word + "\r\n" + wd.trans + "\r\n";

}

 

如果

where fdlink.Element("word").Value.Equals("word")改为

where fdlink.Element("word").Value.Contains("word")

则返回的是一个集合,需要将查询结果Q,添加到List中,或者显示:

var q = from fdlink in xDoc.Descendants("item")

        where fdlink.Element("word").Value.Contains(word)

        select fdlink;

 

string result = "";

foreach (var wd in q)

{

    result += wd.Value + "\r\n";

}

 

添加操作

xDoc.Element("wordbook").Add(

    new XElement("item",

        new XElement("word", word),

        new XElement("trans", trans)

        ));

xDoc.Save(path);

 

删除操作

 (from fdlink in xDoc.Descendants("item")

 where fdlink.Element("word").Value == word

 select fdlink).Remove();

xDoc.Save(path);

 

Update操作:

var q = from fdlink in xDoc.Descendants("item")

        where fdlink.Element("word").Value == word

        select fdlink;

foreach (XElement xe in q)

{

    xe.SetElementValue("trans", trans);

}

xDoc.Save(path);

posted @ 2012-07-22 23:33  拍手笑清风  阅读(161)  评论(0编辑  收藏  举报