public void KBinWriter_Document_ReturnsByteArray() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var source = XDocument.Load(@"testcases.xml"); var kbin = new KBinWriter(source); var outKbin = new KBinReader(kbin.Document); }
public void KBinReader_GetXML_ReturnsValidXML() { var sw = new Stopwatch(); sw.Start(); var kbin = new KBinReader(File.ReadAllBytes(@"testcases_out.kbin")); sw.Stop(); _testOutputHelper.WriteLine(sw.Elapsed.ToString()); _testOutputHelper.WriteLine(kbin.Document.ToString()); }
public static GenericFolder Open(string path) { var file = File.OpenRead(path); var header = new ByteBuffer(file.Read(36)); if (header.GetU32() != Signature) { Program.LogWarning("File is not an IFS file."); return(null); } var version = header.GetU16(); if ((header.GetU16() ^ version) != 0xFFFF) { Program.LogWarning("File version check failed."); return(null); } header.GetU32(); // time header.GetU32(); // ifs size var manifestEnd = header.GetU32(); var dataBlob = new FileBlob(file, manifestEnd); if (version > 1) { header.Offset += 16; } file.Seek(header.Offset, SeekOrigin.Begin); var manifest = new XDocument(); try { manifest = new KBinReader(file.Read((int)(manifestEnd - header.Offset))).Document; } catch (Exception ex) { Program.LogWarning($"Error during manifest decoding: {ex}"); } var root = new GenericFolder(dataBlob, manifest, null, path, Path.GetFileName(path)); try { root.FromXml(); } catch (Exception ex) { Program.LogWarning("Exception during ifs unpack: {0}", ex); } return(root); }