Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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
C# 删除xml文件中的行_C#_Xml - Fatal编程技术网

C# 删除xml文件中的行

C# 删除xml文件中的行,c#,xml,C#,Xml,大家想象一下,我得到一个xml结构的变量,如下所示: <Maintest> <test text="qwe" value="123"></test> <test text="qwer" value="1234"></test> <teste text="qwert" value="12345"></teste> </Maintest> 我已经可以在上面添加一行了,但是如果用户想

大家想象一下,我得到一个xml结构的变量,如下所示:

<Maintest>
   <test text="qwe" value="123"></test>
   <test text="qwer" value="1234"></test>
   <teste text="qwert" value="12345"></teste>
</Maintest>

我已经可以在上面添加一行了,但是如果用户想删除带有value=“1234”的项目测试“qwer”,我怎么做?
感谢guy阅读我的帖子。

您可以使用下面提到的代码:

    xdoc.Elements("Maintest").Elements("test").Where(
                    elemet => elemet.Attribute("text").Value == "qwert")
.ToList().ForEach(i => i.Remove());

如果使用
System.Xml.Linq
名称空间,则可以创建并实例XDocument:

var doc = XDocument.Parse(@"
    <Maintest>
        <test text=""qwe"" value=""123""></test>
        <test text=""qwer"" value=""1234""></test>
        <teste text=""qwert"" value=""12345""></teste>
    </Maintest>"
);
或者您可以使用magic one liner使用(需要包括
System.Xml.XPath
namespace):

这是行不通的。“test”不是根元素,如果“text”属性不存在,则可能存在异常。
doc.Descendants("test").Where(x => (string)x.Attribute("text") == "qwer").Remove();
doc.XPathSelectElements("//test[@text='qwer']").Remove();