Load non-essential files and folders in FileSystem property
This commit is contained in:
parent
30dd4ad1c3
commit
34f9753e1d
@ -30,16 +30,17 @@ namespace UniversalEditor.DataFormats.Package.OpenPackagingConvention
|
||||
|
||||
FileSystemObjectModel fsom = (objectModels.Pop() as FileSystemObjectModel);
|
||||
PackageObjectModel package = (objectModels.Pop() as PackageObjectModel);
|
||||
|
||||
Folder _rels = fsom.Folders["_rels"];
|
||||
if (_rels != null)
|
||||
|
||||
File[] files = fsom.GetAllFiles();
|
||||
foreach (File file in files)
|
||||
{
|
||||
foreach (File file in _rels.Files)
|
||||
if (file.Name.EndsWith(".rels") && file.Parent.Name == "_rels")
|
||||
{
|
||||
string relatedFileName = null;
|
||||
if (file.Name.EndsWith(".rels") && file.Name != ".rels")
|
||||
string fn = System.IO.Path.GetFileName(file.Name);
|
||||
if (fn != ".rels")
|
||||
{
|
||||
relatedFileName = file.Name.Substring(0, file.Name.Length - ".rels".Length);
|
||||
relatedFileName = fn.Substring(0, fn.Length - ".rels".Length);
|
||||
}
|
||||
|
||||
|
||||
@ -61,19 +62,22 @@ namespace UniversalEditor.DataFormats.Package.OpenPackagingConvention
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File _Content_Types = fsom.Files["[Content_Types].xml"];
|
||||
{
|
||||
byte[] data = _Content_Types.GetData();
|
||||
|
||||
OPCContentTypesDataFormat df = new OPCContentTypesDataFormat();
|
||||
ContentTypesObjectModel contentTypes = new ContentTypesObjectModel();
|
||||
Document.Load(contentTypes, df, new MemoryAccessor(data));
|
||||
|
||||
foreach (ContentType type in contentTypes.ContentTypes)
|
||||
else if (file.Name == "[Content_Types].xml" && file.Parent == null)
|
||||
{
|
||||
package.ContentTypes.Add(type);
|
||||
byte[] data = file.GetData();
|
||||
|
||||
OPCContentTypesDataFormat df = new OPCContentTypesDataFormat();
|
||||
ContentTypesObjectModel contentTypes = new ContentTypesObjectModel();
|
||||
Document.Load(contentTypes, df, new MemoryAccessor(data));
|
||||
|
||||
foreach (ContentType type in contentTypes.ContentTypes)
|
||||
{
|
||||
package.ContentTypes.Add(type);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
package.FileSystem.AddFile(file.Name, file.GetData());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.ObjectModels.Package.ContentTypes;
|
||||
using UniversalEditor.ObjectModels.Package.Relationships;
|
||||
|
||||
@ -36,5 +37,25 @@ namespace UniversalEditor.ObjectModels.Package
|
||||
clone.Relationships.Add(item.Clone() as Relationship);
|
||||
}
|
||||
}
|
||||
|
||||
private FileSystemObjectModel mvarFileSystem = new FileSystemObjectModel();
|
||||
public FileSystemObjectModel FileSystem { get { return mvarFileSystem; } }
|
||||
|
||||
public File[] GetFilesBySchema(string p)
|
||||
{
|
||||
List<File> files = new List<File>();
|
||||
Relationship[] rels = mvarRelationships.GetBySchema(p);
|
||||
foreach (Relationship rel in rels)
|
||||
{
|
||||
if (rel.Target.StartsWith("/"))
|
||||
{
|
||||
string target = rel.Target.Substring(1);
|
||||
|
||||
File file = mvarFileSystem.FindFile(target);
|
||||
if (file != null) files.Add(file);
|
||||
}
|
||||
}
|
||||
return files.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user