Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除XML中带有C#的节点_C#_Xml - Fatal编程技术网

删除XML中带有C#的节点

删除XML中带有C#的节点,c#,xml,C#,Xml,我正试图用C#从XML中删除一个节点,但由于某些原因,我无法删除 我做错了什么 代码运行良好,响应为true,但XML没有改变,节点也没有消除 这是我要删除的代码: internal static bool DeleteCamera(string name) { XmlDocument xml = new XmlDocument(); xml.Load("xmlpath.xml"); XmlNode toDelete = xml.Selec

我正试图用C#从XML中删除一个节点,但由于某些原因,我无法删除

我做错了什么

代码运行良好,响应为true,但XML没有改变,节点也没有消除

这是我要删除的代码:

internal static bool DeleteCamera(string name)
    {
        XmlDocument xml = new XmlDocument();
        xml.Load("xmlpath.xml");
        XmlNode toDelete = xml.SelectSingleNode("//Camera[@Name='" + name + "']");
        if (toDelete == null)
        {
            return false;
        }
        else
        {
            toDelete.ParentNode.RemoveChild(toDelete);
            xml.Save("xmlpath.xml");
            return true;
        }
    }
这是我使用WCF服务得到的XML结果:

<Cameras>
   <Camera Name="Camara1" Url="Camara1" Width="600" Height="800" />
   <Camera Name="Camara2" Url="Camara2" Width="600" Height="800" />
</Cameras>

谢谢大家,问题在于名称字符串前后包含撇号(?)

XmlNode toDelete = xml.SelectSingleNode("//Camera[@Name='" +name+ "']");

但是,如果我有加载xml文件的方法,我不知道为什么需要重新启动服务来查看更改。

使用xml linq。xml中的名称是“Camara1”而不是“Camera1”


你的代码对我来说运行得很好。也许您向函数传递了错误的字符串?在XML中,名称拼写为camara,但在其他地方使用camera。是的,我也检查了它。只需检查您正在传递的名称的值。如果名称有问题,它应该返回false。我想,还有另外一些东西是我们不能分享的。这对像
(包含撇号)这样的名字不起作用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            string removeName = "Camara1";
            XElement camera = doc.Descendants().Where(x => (x.Name.LocalName == "Camera") && ((string)x.Attribute("Name") == removeName)).FirstOrDefault();

            camera.Remove();

        }
    }
}