0

私のXMLコードは次のようなものです:

<?xml version="1.0" encoding="utf-8"?>
<Tabel>
  <Member>
    <Naam>Cruciatum</Naam>
    <Kills>1000</Kills>
    <Deaths>10</Deaths>
    <KD>100</KD>
  </Member>
  <Member>
    <Naam>Ghostbullet93</Naam>
    <Kills>10</Kills>
    <Deaths>1</Deaths>
    <KD>10</KD>
  </Member>
  <Member>
    <Naam>test</Naam>
    <Kills>123</Kills>
    <Deaths>11</Deaths>
    <KD>11</KD>
  </Member>
</Tabel>

処理後、XML は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<Tabel>
  <Member>
    <Naam>Cruciatum</Naam>
    <Kills>1000</Kills>
    <Deaths>10</Deaths>
    <KD>100</KD>
  </Member>
  <Member>
    <Naam>Ghostbullet93</Naam>
    <Kills>10</Kills>
    <Deaths>1</Deaths>
    <KD>10</KD>
  </Member>
</Tabel>

少し検索した後、このコードを思いつきました。

どうやらそれは他の人にとってはうまくいったようですが、私にとってはまったくうまくいきません。

Private Sub btnDel_Click(sender As System.Object, e As System.EventArgs) Handles btnDel.Click
        playername = lstmembers.SelectedItem.ToString
        If MsgBox("Ben je zeker dat je " & playername & " wil verwijderen?", MsgBoxStyle.YesNo, "Confirmatie") = MsgBoxResult.Yes Then
            Dim xmldoc As New XmlDocument()
            xmldoc.load("C:\members.xml")
            Dim node As XmlNode = xmldoc.SelectSingleNode("Root/Naam[. = '" & playername & "']")
            If node IsNot Nothing Then
                node.ParentNode.RemoveChild(node)
                xmldoc.Save("C:\members.xml")
            End If
            'reload list
            loadfile()
        End If
    End Sub

私は例外を取得しないので、コードは明らかに必要なものではなく、何かに適している必要があります...

私がどこで間違いを犯したかおわかりいただけると思います。

4

1 に答える 1

1

XPath 式を見てください。

"Root/Naam[. = '" & playername & "']"

という要素が必要Rootです。Memberあなたが本当に代表的なファイルを私たちに与えたと仮定すると、あなたの要素は実際には と呼ばれます。必要な場合がありますTabel/Member/Naam-ドキュメントで XPath を使用することが、ドキュメントのルート要素から暗黙的に開始されるかどうかを思い出せません。

コードの残りの部分はチェックしていませんが、少なくとも最初に試してみる価値はあります。ちなみに、あなたのコードは実際には要素を削除するだけのようです-私はあなたが望むかもしれないと思います:Naam

node.ParentNode.ParentNode.RemoveChild(node.ParentNode)

node.ParentNode(もちろん、別のローカル変数に抽出します。)

個人的には、可能であれば LINQ to XML を使用したいと思います。これにより、作業がより簡単になりますが、それは別の問題です。

于 2012-05-23T16:57:44.510 に答える