2

私はこのようなXMLを持っています

<DataBases>
  <DataBase Name="725" />
  <DataBase Name="425"/>
</DataBases>

以下のコードを使用して、名前タグ 425 を削除しようとしています。

XmlDocument document = new XmlDocument();
document.Load(fileName);
XmlNodeList nodes = document.GetElementsByTagName("DataBase");
foreach (XmlNode node in nodes)
{
       foreach (XmlAttribute attribute in node.Attributes)
       {
            if (attribute.Value == "425")
            {
                 node.RemoveAll();
                 break;
            }
       }
}
document.Save(fileName);

結果は次のようになります:

<DataBases>
  <DataBase Name="725" />
  <DataBase />
</DataBases>

Name属性だけ削除したので、DataBaseタグも削除したいです。

必要な正しい結果は次のとおりです。

<DataBases>
  <DataBase Name="725" />
</DataBases>

どうすればこれを達成できますか?

4

5 に答える 5

1
XmlDocument document = new XmlDocument();
document.Load(fileName);
XmlNodeList nodes = document.GetElementsByTagName("DataBase");
foreach (XmlNode node in nodes)
{
    if (node.GetAttrubute("Name") == "425")
    {
        node.ParentNode.RemoveChild(node);
        break;
    }
}
document.Save(fileName);
于 2013-05-22T10:19:26.060 に答える
1

この場合、XMLDocument をロードし、文字列を XML および XML 文字列に変換してからファイルを保存します。

XmlDocument document = new XmlDocument();
document.Load(fileName);
string str = document.OuterXml;
var root = XDocument.Parse(str);
root.Descendants("DataBase").Where(node => node.Attribute("Name").Value == "425").Remove();
XmlDocument xm = new XmlDocument();
xm.LoadXml(root.ToString());
xm.Save(fileName);
于 2013-05-22T11:42:52.527 に答える
0

これを試して、

string fileName = "test.xml";
XmlDocument document = new XmlDocument();
document.Load("fileName");
string name = "425";
XmlNode node = document.SelectSingleNode("/DataBases/DataBase[@Name='" + name + "']");
if (node != null) node.ParentNode.RemoveChild(node);
document.Save(fileName);
于 2013-06-07T09:44:06.743 に答える