백업을위한 C# 응용 프로그램을 작성 중이며 모든 백업 세부 정보를 저장하는 XML 파일에 하위 노드 저장과 관련된 문제가 있습니다.XML 하위 노드가 저장되지 않습니다.
자체는 다음과 같아야합니다 파일 :
<backup id="0" totalParts="3" date="0" name="0" description="0">
<backup_part id="0" mboxId="0" muid="0">HASH</backup_part>
<backup_part id="1" mboxId="0" muid="0">HASH</backup_part>
<backup_part id="2" mboxId="0" muid="0">HASH</backup_part>
</backup>
내가 부모 노드 ("백업")를 만들 다음과 같이 :
public static XmlElement AddNewBackupNode(
XmlDocument xmlDoc, int backupId, int totalBackupParts,
string backupDate, string backupName, string backupDescription)
{
xmlDoc.Load(Program.defaultBackupFile);
XmlElement singleBackup = xmlDoc.CreateElement("backup");
var reqNumericAttr = new TupleList<int, string>
{
{ backupId, "id" },
{ totalBackupParts, "totalParts" }
};
var reqStringAttr = new TupleList<string, string>
{
{ backupDate, "date" },
{ backupName, "name" },
{ backupDescription, "description" }
};
// TODO: remove one foreach
foreach (var attr in reqNumericAttr)
{
XmlAttribute newAttribute = xmlDoc.CreateAttribute(attr.Item2);
newAttribute.Value = attr.Item1.ToString();
singleBackup.Attributes.Append(newAttribute);
}
foreach (var attr in reqStringAttr)
{
XmlAttribute newAttribute = xmlDoc.CreateAttribute(attr.Item2);
newAttribute.Value = attr.Item1.ToString();
singleBackup.Attributes.Append(newAttribute);
}
xmlDoc.Save(Program.defaultBackupFile);
return singleBackup;
}
그 부분은 노력하고 있습니다.
그럼 이걸로 몇 가지 (필요한만큼) 자식 노드를 추가 할 :
public static void AddNewBackupPart(XmlDocument xmlDoc, XmlElement backup, string fileHash, int backupPartId, int mboxId, int uid)
{
XmlElement backupPart = xmlDoc.CreateElement("backup_part");
backupPart.InnerText = fileHash;
var reqAttr = new TupleList<int, string>
{
{ backupPartId, "id" },
{ mboxId, "mboxId" },
{ uid, "uid" }
};
foreach(var attr in reqAttr)
{
XmlAttribute newAttribute = xmlDoc.CreateAttribute(attr.Item2);
newAttribute.Value = attr.Item1.ToString();
backupPart.Attributes.Append(newAttribute);
}
backup.AppendChild(backupPart);
xmlDoc.Save(Program.defaultBackupFile);
}
그 일 때문에 (새로운 자식 노드) 파일에 그 내용을 저장 실패.
2 개 또는 22 개의 자식 노드를 추가하는 것과 같이 여러 가지 방식으로 실행하려고했으나 기본 내용과 마찬가지로 항상 상단과 같은 방식으로 끝납니다.
오류나 경고가 전혀 표시되지 않습니다.
어떤 아이디어가 잘못 되었나요?
편집 : 나는 전화 곳이 AddNewBackupPart입니다 :
// add new backup row to XML
XmlDocument xmlDoc = XMLparser.LoadBackupsFile(); // TODO: if above can't be done, move that line to XMLparser and Add... method
XmlElement backupRoot = XMLparser.AddNewBackupNode(xmlDoc, backupId, totalBackupParts, backupDate, backupName, backupDescription);
// handle each file in folder
int partId = 1;
foreach (string fileName in FileHandler.GetAllBackupPackages())
{
Console.WriteLine("file: {0}", fileName);
// generate Hash
string fileHash = FileHandler.GenerateFileChecksum(fileName);
Console.WriteLine("hash: {0}", fileHash);
// add single node to XML
XMLparser.AddNewBackupPart(xmlDoc, backupRoot, fileHash, partId, 000);
partId++;
}
당신은 우리에게 코드를 표시 할 수 있습니다 그 전화'AddNewBackupPart (...) 제발? – aprovent
@aprovent 첫 번째 게시물에서 코드를 업데이트했습니다. 죄송합니다. –
@ 토마스 그렇습니다. 첫 번째 게시물의 맨 위에 XML 파일이 어떻게 보이나요? –