使用vb.net使用子节点更新XML文件

时间:2013-09-27 09:50:04

标签: .net xml vb.net xml-parsing linq-to-xml

以下是我的xml文件的“默认”结构我从它开始:<Group>的数量为10

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--Properties General Logistic Plan-->
<Groups>
<Group id="01" GroupLevel="01" Description="First Group, Category first">
  <subGroups>

  </subGroups>
</Group>
<Group id="01" GroupLevel="02" Description=" First Group, Category second ">
  <subGroups>

  </subGroups>
</Group>
………
</Groups>

我想要的是传递一个名为:subGroup的新子节点 在“01”组中 <subGroup id=”x” GroupLevel=”01.01” Description=”blablabla”/>
或者另外在“02”组中 <subGroup id=”z” GroupLevel=”01.02” Description=”blablabla”/>
更重要的是,我必须在<Group>下创建一个新的<subGroups>(取决于GroupLevel),最终结构将如下所示:

<Groups>
<Group id="01" GroupLevel="01" Description="First Group, Category first">
  <subGroups>
    <subGroupB id=”10” GroupLevel=”01.01” Description=”blablabla”/>
      <GroupA id="21" GroupLevel="01.10" Description=" blablabla ">
         <subGroupC id=”10” GroupLevel=”01.21” Description=”blablabla”/>
        <GroupB id="33" GroupLevel="01.10.21" Description=" blablabla ">
            <subGroupD id=”12” GroupLevel=”01.10.21” Description=”blablabla”/>
        </GroupB>
      </GroupA>
  </subGroups>
</Group>
<Group id="01" GroupLevel="02" Description=" First Group, Category second ">
  <subGroups>

  </subGroups>
</Group>
………
</Groups>

子组... B或C或D可能很多,当然每次都必须在每个位置通过。
我已经为此使用了多种解决方案;但没有人满足我的需要 这个问题超出了我的个人编程经验 有人知道我该做什么吗?
如果你能使用vb.net给我一个完整的解决方案;像public class这样的东西。

它必须是这样的,因为最终用户需要根据每个客户使用的subGroup添加新的GroupLevel

1 个答案:

答案 0 :(得分:0)

如果您使用的是net framework3.5,可以使用 XDocument ,这里有一些建议,您可以继续编码和反馈;)

1)请通过XDocument的Descadents或Elements函数获取特定节点,也许它将与First()或FirstOrDefault()结合使用。但是,请首先使用XDocument的Load来加载完整的xml文件,注意它的路径。

2)然后你可以使用XElment的Add方法添加一个新的XElement(参见MSDN示例:http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.add(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

3)最后,请使用XDocument的Save方法覆盖xml文件。