【发布时间】:2018-09-24 09:33:40
【问题描述】:
我有一个由 C# 程序创建的 xml 文件(data/tools.xml),如下所示:
<?xml version="1.0"?>
<ArrayOfToolClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ToolClass>
<ToolID>1</ToolID>
<ToolName>Multiflute Endmill</ToolName>
<ToolDia>8</ToolDia>
<ToolTooth>4</ToolTooth>
<ToolApmxs>32</ToolApmxs>
<ToolCuttingSpeed>200</ToolCuttingSpeed>
<ToolFeedPerTooth>0.05</ToolFeedPerTooth>
<ToolAe>4</ToolAe>
<ToolAp>8</ToolAp>
<ToolManufacturer>SECO</ToolManufacturer>
<ToolSerial>FHAKJSH</ToolSerial>
</ToolClass>
<ToolClass>
<ToolID>2</ToolID>
<ToolName>Multiflute Endmill</ToolName>
<ToolDia>4</ToolDia>
<ToolTooth>4</ToolTooth>
<ToolApmxs>25</ToolApmxs>
<ToolCuttingSpeed>200</ToolCuttingSpeed>
<ToolFeedPerTooth>0.03</ToolFeedPerTooth>
<ToolAe>2</ToolAe>
<ToolAp>4</ToolAp>
<ToolManufacturer>SECO</ToolManufacturer>
<ToolSerial>SJKHDKJ</ToolSerial>
</ToolClass>
<ToolClass>
<ToolID>3</ToolID>
<ToolName>Multiflute Endmill</ToolName>
<ToolDia>20</ToolDia>
<ToolTooth>4</ToolTooth>
<ToolApmxs>38</ToolApmxs>
<ToolCuttingSpeed>45</ToolCuttingSpeed>
<ToolFeedPerTooth>0.02</ToolFeedPerTooth>
<ToolAe>2</ToolAe>
<ToolAp>20</ToolAp>
<ToolManufacturer>SECO</ToolManufacturer>
<ToolSerial>SJKHDKJ</ToolSerial>
</ToolClass>
</ArrayOfToolClass>
我在 Windows 窗体应用程序中将此文件加载到 datagridview。 Program image 1 我想从 datagridview 中选择的 xml 文件中删除项目。 我试过这段代码:
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Biztosan törlöd a szerszámot?", "Törlés", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
int id = (ToolsDataGridView.SelectedRows[0].Index) + 1;
Console.WriteLine(id);
XDocument xmlDoc = XDocument.Load(@"data\tools.xml");
var elementsToDelete = from ele in xmlDoc.Descendants("ToolClass")
where ele != null && ele.Element("ToolID").Value == id.ToString()
select ele;
foreach (var x in elementsToDelete)
{
x.RemoveAll();
}
xmlDoc.Save(@"data\tools.xml");
ReadXmlData();
}
代码从 xml 中删除选定的元素,但在其位置放置 <ToolClass />。谁能帮帮我,我做错了什么?
代码的另一个问题: 当我删除一个元素时,ToolID 与 datagridview 选择的行索引不匹配。如何根据所选行获取正确的 ToolID?
谢谢!
【问题讨论】:
标签: c# xml datagridview