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);