刪除的項目,我有以下XML文件:從XML列表使用LINQ
<ArrayOfNO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<No>
<Id>0</Id>
<Name>txt_0</Name>
<Texto>Função 0</Texto>
<Txt_relacionados>
<string>txt_1</string>
<string>txt_2</string>
</Txt_relacionados>
<Nível>2</Nível>
<X>393</X>
<Y>55</Y>
</No>
<No>
<Id>0</Id>
<Name>txt_1</Name>
<Texto>Função 0</Texto>
<Txt_relacionados>
<string>txt_0</string>
</Txt_relacionados>
<Nível>1</Nível>
<X>234</X>
<Y>115</Y>
</No>
<No>
<Id>1</Id>
<Name>txt_2</Name>
<Texto>Função 1</Texto>
<Txt_relacionados>
<string>txt_0</string>
</Txt_relacionados>
<Nível>1</Nível>
<X>234</X>
<Y>115</Y>
</No>
</ArrayOfNO>
我想,當一個元素被刪除("txt2"
爲例),該計劃中的所有元素的<Txt_relacionados>
旨在檢查任何與"txt_2"
相關的項目,如果真的刪除。
我已刪除與下面的代碼的項目(這是工作):
public void remove(String name)
{
RefreshXDoc();
var oEmp = doc.Descendants().Elements("No")
.Where(d => d.Element("Name").Value == name)
.FirstOrDefault();
if (oEmp == null)
{
return;
}
oEmp.Remove();
SaveXDoc();
}
但首先需要從列表中選擇「txt_relacionados」那些與之相關的其他元素刪除所有項目(不知道如何實現)。我試過這樣的事情:
var oEmp = doc.Descendants("No").Elements("Txt_relacionados")
.Where(d => d.Element("string").Value == name)
.ToList();
oEmp.Remove();
SaveXDoc();
任何有建議嗎? 謝謝!從XML結構
您需要遞歸算法,因爲每個節點都可能引用其他節點。 – jdweng