private void toolStripButton2_Click(object sender, EventArgs e)
{
XmlTextReader reader = new XmlTextReader("component.xml");
XmlDocument doc = new XmlDocument();
doc.Load(reader);
string path4 = treeView1.SelectedNode.FullPath.ToString();
XmlNode nodeToRemove = doc.SelectSingleNode(path4);
XmlNode parentNode = nodeToRemove.ParentNode;
parentNode.RemoveChild(nodeToRemove);
}我在xml中使用以下代码删除节点,但它生成了以下错误。请帮帮我。
这是我的xml的一部分。我想删除用户选择的路径条目。对于选择路径,我生成了treeview。变量path4来自树视图选择的路径。
<WindowEntries>
<WindowEntry>
<Name>tbwUnitOverview</Name>
<View>TRN_UNIT</View>
<LU>TrnUnit</LU>
<DefaultWindowText />
<Flags>0</Flags>
</WindowEntry>
<WindowEntry>
<Name>tbwBrandOverView</Name>
<View>TRN_BRAND</View>
<LU>TrnBrand</LU>
<DefaultWindowText />
<Flags>0</Flags>
</WindowEntry>
<WindowEntry>
<Name>tbwProductCategory</Name>
<View>TRN_PROD_CATEGORY</View>
<LU>TrnProdCategory</LU>
<DefaultWindowText />
<Flags>0</Flags>
</WindowEntry>
<WindowEntry>
<Name>tbwModel</Name>
<View>TRN_MODEL</View>
<LU>TrnModel</LU>
<DefaultWindowText />
<Flags>0</Flags>
</WindowEntry>
</WindowEntries>


发布于 2011-10-04 11:16:55
仅供参考,代码应该是
using (XmlReader reader = XmlReader.Create("component.xml"))
{
XmlDocument doc = new XmlDocument();
doc.Load(reader);
string path4 = treeView1.SelectedNode.FullPath.ToString();
// now replace '\' by '/'
path4 = path4.Replace('\\', '/');
XmlNode nodeToRemove = doc.SelectSingleNode(path4);
XmlNode parentNode = nodeToRemove.ParentNode;
parentNode.RemoveChild(nodeToRemove);
}new XmlTextReader()。它已经被替换为XmlReader.Create().using块,以确保它被清理,而不管有什么异常。发布于 2011-09-16 20:45:57
正如Mark Hosang提到的,这是因为您使用的是\而不是/。尝试:
path4 = path4.Replace("\\", "/");这应该会起作用;)
发布于 2011-10-04 11:07:45
Xpath的格式必须正确: /node1/node2/.../nodeN
像这样修复,它是有效的:)
XmlTextReader reader = new XmlTextReader("data.xml");
XmlDocument doc = new XmlDocument();
doc.Load(reader);
string path4 = treeView1.SelectedNode.FullPath.ToString();
// now replace '\' by '/'
path4 = path4.Replace('\\', '/');
// appending '/' at beginning
path4 = "/" + path4;
XmlNode nodeToRemove = doc.SelectSingleNode(path4);
XmlNode parentNode = nodeToRemove.ParentNode;
parentNode.RemoveChild(nodeToRemove);请参考Xpath语法:http://www.w3schools.com/xpath/xpath_syntax.asp
https://stackoverflow.com/questions/7143739
复制相似问题