C# 如何删除XML节点?
我已经创建了从XML中选择和删除节点的方法。我的代码运行,但XML节点未被删除 我不知道代码哪里出错,请帮助我解决此问题:C# 如何删除XML节点?,c#,asp.net,xml,C#,Asp.net,Xml,我已经创建了从XML中选择和删除节点的方法。我的代码运行,但XML节点未被删除 我不知道代码哪里出错,请帮助我解决此问题: public XmlNodeList getXmlNodeList(string XmlNodeName) { XmlDocument doc = new XmlDocument(); doc.Load(_connection); XmlNodeList elemList = doc.GetElementsByTagName(XmlNodeName)
public XmlNodeList getXmlNodeList(string XmlNodeName)
{
XmlDocument doc = new XmlDocument();
doc.Load(_connection);
XmlNodeList elemList = doc.GetElementsByTagName(XmlNodeName);
return elemList;
}
public void deleteXmlNode(string XmlNodeName, string XmlNodeValue)
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(_connection);
XmlNodeList xnode = getXmlNodeList(XmlNodeName);
foreach (XmlNode item in xnode)
{
if (item.InnerText == XmlNodeValue)
{
item.ParentNode.RemoveChild(item);
break;
}
}
xdoc.Save(_connection);
}
我的XML代码:
<AriaGostarInformation>
<MenuInformation>
<MenuNames>
one
</MenuNames>
<MenuNames Name="1">two</MenuNames>
<MenuNames Name="2">three</MenuNames>
<MenuNames Name="3">four</MenuNames>
<MenuNames Name="4">five</MenuNames>
<MenuNames Name="5">six</MenuNames>
<SubMenuNames parentName="1">
fgfgfgfgs
</SubMenuNames>
<SubMenuNames parentName="3">
</SubMenuNames>
</MenuInformation>
<SliderInformation>
</SliderInformation>
<LasProductInformation>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
<Product>
<ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
<Subject>bere</Subject>
<Description>nare</Description>
</Product>
</LasProductInformation>
</AriaGostarInformation>
一
二
三
四
五
六
FGS
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
加载两个单独的XmlDocument
对象来查找xmltree的节点,这会影响性能。然而,看起来你并没有什么实际的错误。您可能没有传递有效的参数。您是否尝试添加任何跟踪以查看提交给方法的值?还有一个建议,这两个方法可以组合成一个非常简短的方法,使用Linq to Xml,使用下面的delete节点方法代码。以下选项可以删除所有匹配的节点:
public void deleteXmlNode(string xmlNodeName, string xmlNodeValue)
{
XDocument xDoc = XDocument.Load(_connection);
var xNodeList = xDoc.Descendants(xmlNodeName).Where(n => n.Value == xmlNodeValue);
xNodeList.Remove();
}
资料来源: