1

以下のようなxmlファイルがあるとします

<DataBaseServers>
  <DataBaseServer id="1" title="IISDevdb1" address="Address1">
    <DataBases>      
      <database id="1" name="db1" userID="u1" password="p1" />
      <database id="3" name="db3" userID="u3" password="p3" />
    </DataBases>
  </DataBaseServer>
  <DataBaseServer id="2" title="iis2" address="Address2">
  <DataBases>      
      <database id="2" name="db2" userID="u2" password="p2" />    
    </DataBases>
  </DataBaseServer>
</DataBaseServers>

データベース id="3" を削除したい。

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

<DataBaseServers>
  <DataBaseServer id="1" title="IISDevdb1" address="Address1">
    <DataBases>      
      <database id="1" name="db1" userID="u1" password="p1" />     
    </DataBases>
  </DataBaseServer>
  <DataBaseServer id="2" title="iis2" address="Address2">
  <DataBases>      
      <database id="2" name="db2" userID="u2" password="p2" />    
    </DataBases>
 </DataBaseServer>
</DataBaseServers>

データベース id="2" を削除すると、xml は次のようになります。

<DataBaseServers>
  <DataBaseServer id="1" title="IISDevdb1" address="Address1">
    <DataBases>      
      <database id="1" name="db1" userID="u1" password="p1" />
      <database id="3" name="db3" userID="u3" password="p3" />
    </DataBases>
  </DataBaseServer>
  <DataBaseServer id="2" title="iis2" address="Address2"/>
 </DataBaseServers>

XDocument を使用してそれを行うにはどうすればよいですか?

4

2 に答える 2

0

はい、分かりました

xdoc.Descendants("database")
.Where(xa => xa.Attribute("id").Value == Convert.ToString(3))
.Remove();
于 2013-06-26T11:44:15.040 に答える
0

XDocument の要素のリストを繰り返し処理し、method.as を使用する必要がありますelement.Remove();

XDocument document = XDocument.Load(Server.MapPath(@"Doc\abc.xml")); ;
        foreach (XElement element in document.Document.Descendants("database").ToList())
        {
            if(element.Attribute("id").Value == Convert.ToString(3))
            element.Remove();
        }
        document.Save(Server.MapPath(@"Doc\abc1.xml"));

XDocument からのノードの削除を参照してください。

于 2013-06-26T11:35:50.730 に答える