如何从xml文件中删除某些root?

时间:2014-01-18 17:10:45

标签: c# xml linq-to-xml

我的'.xml'文件看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Requestes>
  <Single_Request num="1">
    <numRequest>1</numRequest>
    <IDWork>1</IDWork>
    <NumObject>1</NumObject>
    <lvlPriority>Высокий</lvlPriority>
  </Single_Request>
  <Single_Request num="2">
    <numRequest>2</numRequest>
    <IDWork>2</IDWork>
    <NumObject>2</NumObject>
    <lvlPriority>Средний</lvlPriority>
  </Single_Request>
  <Periodic_Request num="1">
    <numRequest>3</numRequest>
    <IDWork>23</IDWork>
    <pFrequency>23</pFrequency>
    <lvlPriority>Низкий</lvlPriority>
    <time_service>23</time_service>
    <time_last_service>23</time_last_service>
    <relative_time>23</relative_time>
  </Periodic_Request>
</Requestes>

所以我需要删除属性值等于Single_Request的{​​{1}}。我试过这样做:

sTxtBlock_numRequest.Text

不幸的是,没有什么是幸福的,不知道如何解决这个问题。

这就是为什么,我期待着你的帮助。

1 个答案:

答案 0 :(得分:2)

您正在将属性值与字符串文字"sTxtBlock_numRequest.Text"进行比较。您应该传递文本框文本的值:

doc.Root.Elements("Single_Request") 
   .Where(t => (string)t.Attribute("num") == sTxtBlock_numRequest.Text)
   .Remove();

注意 - 当您获得root的Elements元素时,最好使用Single_Request,因为Descendants将搜索整个树,而不是仅查看直接子项。您也可以在不保存查询到本地变量的情况下调用Remove()