Hejxml struktur och föräldrar
Detta är mitt problem
Jag har en metod i en webservice som jag anropar.
I webservicen så använder jag ettt api mot ett annat system där jag skapar upp mappar.
Så här fungerar det .
1, jag anropar metoden CreateProjectById(XmlNode ctx ,int parentId,ArrayList inArrayList )
2. jag skapar en ny mapp med hjälp av aaApi.CreateProjectById(out projectId, parentId);
3. jag får tillbaka projectId och lägger det i finalProjectId dvs finalProjectId = projectId;
4. jag börjar loopa igenom inArrayList och anropar TraverseNode ,
och i TraverseNode anropar jag DisplayNode
Det jag vill åstakomma är följande:
Jag skapar ju mappar med hjälp av CreateProjectById i DisplayNode.
mitt dilemma är att jag inte kan få till strukturen som den är i xmlstrukturen.
jag vill alltså skapa en mapp som heter ideSkede och den ska ha en undermapp som heter Delprojektbeteckning
Så när jag skapar IdeSkede mappen med CreateProjectById i DisplayNode så anger jag ju vilken förälder den ska ha i finalProjectId parametern.
och när jag skapat ideskede så får jag tillbaka ett nytt id som ska vara förälder till Delprojektbeteckning.
Den xml strukturen jag gjort här är ganska liten och xml strukturen kan innehålla upp till 3 nivår när den blir större.
Hur kan jag gör för att hålla reda på vilken förälder som ska in som inparameter "finalProjectId)" i DisplayNode?
<code>
foreach (string i in inArrayList )
{
XmlDataDocument xmlDataDoc = new XmlDataDocument();
xmlDataDoc.LoadXml(i) ;
TraverseNode(xmlDataDoc.DocumentElement,projectId,finalProjectId);
}
inArrayList innehåller exempelvis följande xmlstruktur
<Skede>
<Id>1</Id>
<ParentName>IdeSkede</ParentName>
<Subfolder>
<Namn>Delprojektbeteckning</Namn>
</Subfolder>
</Skede>
private void TraverseNode(XmlNode node, int projectId, int finalProjectId)
{
projectId = DisplayNode(node,projectId,projectId,storageId,managerId,type,vaultConfig);
if(node.HasChildNodes)
{
foreach(XmlNode child in node.ChildNodes)
{
TraverseNode(child,projectId,projectId);
}
}
}
private static int DisplayNode(XmlNode node, int projectId, int finalProjectId)
{
switch (node.NodeType)
{
case XmlNodeType.Text:
if(node.Value != "1")
{
projectId=0;
//mappen skapas
aaApi.CreateProjectById(out projectId, finalProjectId, storageId, managerId, type, node.Value.ToString(),node.Value.ToString(), vaultConfig);
if(projectId > 0)
{
aaApi.ExecuteSqlStatement("exec UPDATE_DMS_TABLE 'dms_proj SET o_envno=101 WHERE o_projectno=" + projectId.ToString() + " AND o_parentno=" + finalProjectId.ToString() + "';");
return projectId;
}
}
break;
}
return projectId ;
}
</code>