Just nu i M3-nätverket
Jump to content

Xml Remove Element?


Jepqe

Recommended Posts

Tjo!

 

Jag hade tänkt ha en lista med medlemmar till ett eget projekt. Xml:en består av X antal personer just nu, och ett exempel skulle kunna vara:

<Members>
 <Member>
   <Nr>111</Nr>
   <Förnamn>Anders</Förnamn>
   <Efternamn>Andersson</Efternamn>
   <Adress>Södra Gatan 7</Adress>
   <Postnr>111 11</Postnr>
   <Ort>Sthlm</Ort>
   <Födelsedatum>111111</Födelsedatum>
   <Email>1111@hotmail.se</Email>
 </Member>
 <Member>
   <Nr>555</Nr>
   <Förnamn>Bertil</Förnamn>
   <Efternamn>Bertilsson</Efternamn>
   <Adress>Sankt Gatan 2</Adress>
   <Postnr>555 55</Postnr>
   <Ort>Sthlm</Ort>
   <Födelsedatum>555555</Födelsedatum>
   <Email>5555@yahoo.se</Email>
 </Member>
</Members>

Tanken är att jag vill kunna ta bort hela <Member> . . . </Member> genom att kolla vilket Medlems - "Nr" personen har.

 

Har försökt med XPath men får inte till det. Min "path" blir bara "null". Någon som kan hjälpa mig?

 

Tjipp!!

Link to comment
Share on other sites

Vilket språk använder du för att manipulera XML:en?

Svar: C#

 

Jag kom så långt nu att jag får bort alla childrens, dock blir "Parent" taggarna <Member></Member> kvar. Hur ska jag lyckas få bort de också? Koden är i alla fall i nuläget:

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(Server.MapPath("test.xml"));

XmlNodeList listNr = xmlDoc.GetElementsByTagName("Nr");

foreach (XmlNode node in listNr)
{
 if (node.InnerText == "555")
 {
   node.ParentNode.RemoveAll();
   xmlDoc.Save(Server.MapPath("newtest.xml"));
   break;
 }
}

 

Kan man kanske loopa igenom hela Xml-dokumentet och kolla vilka <Member></Member> som inte innehåller någon data och plocka bort dem på något sätt (?).

Link to comment
Share on other sites

Jag fixa det.. I'm done (dock är det säkert inte den finaste lösningen).

 

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(Server.MapPath("test.xml"));

XmlNodeList listMember = xmlDoc.GetElementsByTagName("Member");

foreach (XmlNode nodeMem in listMember)           
{
 if (nodeMem.FirstChild.FirstChild.Value.ToString() == "555")
 {
   XmlNode memRem = nodeMem;
   nodeMem.ParentNode.RemoveChild(memRem);

   xmlDoc.Save(Server.MapPath("newtest.xml"));
   break;
 }
}

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...