我想根据用户选择的类别将“联系人”添加到“联系人”。假设用户从组合框中选择“朋友”,我将如何添加到所选类别。
<PhoneContacts>
<Categories>
<Category Name="Colleagues">
<Contacts />
</Category>
<Category Name="Friends">
<Contacts />
</Category>
</Categories>
</PhoneContacts>
Fields to be added is this
<Contact>
<fullname>joe</fullname>
<phoneno>123456</phoneno>
<address>stack overflow</address>
</Contact>
答案 0 :(得分:0)
使用LINQ to XML可以轻松完成。您需要创建一个包含联系人信息的新XElement
,然后将其添加为正确类别中Contacts
元素的子项。为简单起见,我建议使用方法创建联系人XElement
,然后将其添加到XML中。它看起来像这样:
public XElement CreateContact(string name, string phone, string address)
{
XElement contact = new XElement("Contact",
new XElement("fullname", name),
new XElement("phoneno", phone),
new XElement("address", address));
return contact;
}
然后你可以添加如下内容:
XDocument xDoc = XDocument.Load("contacts.xml");
string category = "Friends";
string name = "joe";
string phone = "123456";
string address = "stack overflow";
xDoc.Descendants("Contacts")
.Where(x => x.Parent.Attribute("Name").Value == category)
.Single()
.Add(CreateContact(name, phone, address));
xDoc.Save();
上面的代码通过加载XML文件来创建XDocument
(xDoc)。
LINQ语句根据与类别变量匹配的父节点Contact
属性选择正确的Name
节点(另请注意,它希望只有一个匹配项)。然后,它通过Contact
返回的XElement
添加新的CreateContact
节点组。
然后保存更新的XML文件。
新XML将如下所示:
<PhoneContacts>
<Categories>
<Category Name="Colleagues">
<Contacts />
</Category>
<Category Name="Friends">
<Contact>
<fullname>joe</fullname>
<phoneno>123456</phoneno>
<address>stack overflow</address>
</Contact>
</Category>
</Categories>
</PhoneContacts>