0

我正在尝试编辑收入节点,并使用当前代码实现此目的。但是,所有其他元素(RptMenu 和 Icon)都将被删除。我希望它们保留在 XML 文件中,并且只将收入更改为文本框设置的任何内容。组合框用于选择要更改的菜单项(收入、股票等)。

XML 代码:(为了简单起见,没有包含更多菜单项)

<ReportMenu>

<RptMenu category="Menu">
    <MenuItem>Income</MenuItem>
    <Icon>C:\Documents\Visual Studio 2008\Projects\Menu\Menu\Resources\IncomeImage.jpg</Icon>
  </RptMenu>

<RptMenu category="Menu">
    <MenuItem>Stock</MenuItem>
    <Icon>C:\Documents\Visual Studio 2008\Projects\Menu\Menu\Resources\IncomeImage.jpg</Icon>
  </RptMenu>

 </ReportMenu>

vb.net 代码:

Private Sub btnEditCategory_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditCategory.Click

Dim xd As New XmlDocument()
        xd.Load("C:\Documents\Reports.xml")

        Dim newNode As XmlElement = xd.CreateElement("MenuItem")
        newNode.InnerText = txtAddCategory.Text

        For Each oldNode As XmlNode In xd.SelectNodes("ReportMenu/RptMenu")

            If oldNode.SelectSingleNode("MenuItem").InnerText = cmbCategory.Text Then
                oldNode.ParentNode.ReplaceChild(newNode, oldNode)
            End If

        Next
        xd.Save("C:\Documents\Reports.xml")

    End Sub
4

1 回答 1

0

尝试这个:

<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Name>
</Name>
</Profiles>

或者

Dim doc As XDocument = XDocument.Load("Profiles.xml")
ComboBox1.DataSource = (From element In doc.Descendants("Name") Select element.Value).ToList()

演示:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/1faf99bd-f22e-4f52-aa0a-2d4328835537/c-change-xml-node

于 2013-08-30T14:00:50.090 回答