4

XML を操作するためのクラスを作成しています。メソッド RemoveNode のオーバーロードを作成しました。

public partial class HWXml
{
    public string XmlFile;
    private XmlDocument XmlDoc = new XmlDocument();

    public HWXml(string XmlFile)
    {
        this.XmlFile = XmlFile;
    }

    public XmlNode SelectSingleNode(string NodePath)
    {
        XmlDoc.Load(XmlFile);
        return XmlDoc.SelectSingleNode(NodePath);
    }

    public void RemoveNode(XmlNode removeChild)
    {
        XmlDoc.Load(XmlFile);
        removeChild.ParentNode.RemoveChild(removeChild);
        XmlDoc.Save(XmlFile);
    }

    public void RemoveNode(string RemoveChild)
    {
        XmlDoc.Load(XmlFile);
        XmlNode removeChild = XmlDoc.SelectSingleNode(RemoveChild);
        removeChild.ParentNode.RemoveChild(removeChild);
        XmlDoc.Save(XmlFile);
    }
}

文字列パラメーターを使用してノードを削除しようとすると、機能します

private void RemoveXML_Click(object sender, RoutedEventArgs e)
{
    MyXmlClass myXmlClass = new MyXmlClass(XmlFile);
    myXmlClass.RemoveNode("root/Content");
}

しかし、XmlNode パラメーターを使用してノードを削除しようとすると、コンパイル、実行、エラー メッセージは表示されませんが、効果はなく、XML ファイル内の何も削除されません。

private void RemoveXML_Click(object sender, RoutedEventArgs e)
{
    MyXmlClass myXmlClass = new MyXmlClass(XmlFile);
    XmlNode node = myXmlClass.SelectSingleNode("root/Conteudo");
    myXmlClass.RemoveNode(node);
}

問題は何ですか?

4

1 に答える 1