-1

我想根据用户选择的类别将“联系人”添加到“联系人”。假设用户从组合框中选择“朋友”,我将如何添加到所选类别。

<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>
4

1 回答 1

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

XDocument上面的代码通过加载 XML 文件创建了一个(xDoc)。

LINQ 语句Contact根据与类别变量匹配的父节点Name属性选择正确的节点(另请注意,它预计只有一个匹配项)。然后它通过返回的 from添加一个新的Contact节点组。XElementCreateContact

然后保存更新的 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>
于 2013-08-14T22:21:29.393 回答