如何在项目中添加源节点作为子节点?

时间:2014-03-06 13:01:35

标签: xml vb.net linq vb.net-2010

这是我使用LINQ创建的xml文件。

<?xml version="1.0" encoding="utf-16"?>
    <projects>
      <project id="2">
        <source id="2">
          <category>2</category>
        </source>
        <name>2</name>
        <category>2</category>
      </project>
    </projects>

我使用了以下代码。

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

        Dim doc As XDocument = XDocument.Load("\\Demo.xml")
        Dim oDept = doc.Descendants().Elements("project").FirstOrDefault()

        Dim oEmp As New XElement("project")
        oEmp.Add(New XAttribute("id", 3))

        Dim src As New XElement("source")
        src.Add(New XAttribute("id", 3))
        src.Add(New XElement("category", 3))

        oEmp.Add(New XElement("name", 3))
        oEmp.Add(New XElement("category", 3))

        oEmp.Element("source").Add(src)
        doc.Save("\Demo.xml")
        MessageBox.Show("Added Succefully!")
 End Sub

我想使用此代码在oEmp中添加src。 示例:oEmp.Element(“source”)。添加(src)

1 个答案:

答案 0 :(得分:0)

XElement添加为另一个XElement的子项的方法只是在父元素中调用.Add(),将子元素作为参数传递。您已经使用<name><category>元素完成了此操作:

oEmp.Add(New XElement("name", 3))
oEmp.Add(New XElement("category", 3))

<source>元素应该是相同的:

Dim src As New XElement("source")
src.Add(New XAttribute("id", 3))
src.Add(New XElement("category", 3))
oEmp.Add(src)

另一方面,您的代码不使用最终创建的oEmp元素。如果我理解了你正确的内容,你应该在保存<projects>之前将其作为根元素(doc)的子元素添加:

Dim root = doc.Root;
root.Add(oEmp);