def ToXml(self, Package): if self.Package: pass # # Create PackageSurfaceArea node # DomPackage = minidom.Document().createElement('PackageSurfaceArea') # # Header # Tmp = PackageHeaderXml() DomPackage.appendChild(Tmp.ToXml(Package, 'Header')) # # ClonedFrom # Tmp = ClonedFromXml() if Package.GetClonedFromList() != []: DomPackage.appendChild( Tmp.ToXml(Package.GetClonedFromList[0], 'ClonedFrom')) # # LibraryClass # LibraryClassNode = CreateXmlElement('LibraryClassDeclarations', '', [], []) for LibraryClass in Package.GetLibraryClassList(): Tmp = LibraryClassXml() LibraryClassNode.appendChild( Tmp.ToXml(LibraryClass, 'LibraryClass')) DomPackage.appendChild(LibraryClassNode) # # IndustryStandardHeader # IndustryStandardHeaderNode = CreateXmlElement( 'IndustryStandardIncludes', '', [], []) for Include in Package.GetStandardIncludeFileList(): Tmp = IndustryStandardHeaderXml() IndustryStandardHeaderNode.appendChild( Tmp.ToXml(Include, 'IndustryStandardHeader')) DomPackage.appendChild(IndustryStandardHeaderNode) # # PackageHeader # PackageIncludeHeaderNode = CreateXmlElement('PackageIncludes', '', [], []) for Include in Package.GetPackageIncludeFileList(): Tmp = PackageIncludeHeaderXml() PackageIncludeHeaderNode.appendChild( Tmp.ToXml(Include, 'PackageHeader')) DomPackage.appendChild(PackageIncludeHeaderNode) ModuleNode = CreateXmlElement('Modules', '', [], []) for Module in Package.GetModuleDict().values(): Tmp = ModuleSurfaceAreaXml() ModuleNode.appendChild(Tmp.ToXml(Module)) DomPackage.appendChild(ModuleNode) # # Guid # GuidProtocolPpiNode = CreateXmlElement('GuidDeclarations', '', [], []) for GuidProtocolPpi in Package.GetGuidList(): Tmp = GuidXml('Package') GuidProtocolPpiNode.appendChild(Tmp.ToXml\ (GuidProtocolPpi, 'Entry')) DomPackage.appendChild(GuidProtocolPpiNode) # # Protocol # GuidProtocolPpiNode = \ CreateXmlElement('ProtocolDeclarations', '', [], []) for GuidProtocolPpi in Package.GetProtocolList(): Tmp = ProtocolXml('Package') GuidProtocolPpiNode.appendChild\ (Tmp.ToXml(GuidProtocolPpi, 'Entry')) DomPackage.appendChild(GuidProtocolPpiNode) # # Ppi # GuidProtocolPpiNode = CreateXmlElement('PpiDeclarations', '', [], []) for GuidProtocolPpi in Package.GetPpiList(): Tmp = PpiXml('Package') GuidProtocolPpiNode.appendChild\ (Tmp.ToXml(GuidProtocolPpi, 'Entry')) DomPackage.appendChild(GuidProtocolPpiNode) # # PcdEntry # PcdEntryNode = CreateXmlElement('PcdDeclarations', '', [], []) for PcdEntry in Package.GetPcdList(): Tmp = PcdEntryXml() PcdEntryNode.appendChild(Tmp.ToXml2(PcdEntry, 'PcdEntry')) DomPackage.appendChild(PcdEntryNode) # # MiscellaneousFile # Tmp = MiscellaneousFileXml() if Package.GetMiscFileList(): DomPackage.appendChild( Tmp.ToXml(Package.GetMiscFileList()[0], 'MiscellaneousFiles')) # # UserExtensions # if Package.GetUserExtensionList(): for UserExtension in Package.GetUserExtensionList(): Tmp = UserExtensionsXml() DomPackage.appendChild( Tmp.ToXml(UserExtension, 'UserExtensions')) return DomPackage
def ToXml(self, DistP): if self.DistP: pass if DistP != None: # # Parse DistributionPackageHeader # Attrs = [ ['xmlns', 'http://www.uefi.org/2011/1.1'], ['xmlns:xsi', 'http:/www.w3.org/2001/XMLSchema-instance'], ] Root = CreateXmlElement('DistributionPackage', '', [], Attrs) Tmp = DistributionPackageHeaderXml() Root.appendChild(Tmp.ToXml(DistP.Header, 'DistributionHeader')) # # Parse each PackageSurfaceArea # for Package in DistP.PackageSurfaceArea.values(): Psa = PackageSurfaceAreaXml() DomPackage = Psa.ToXml(Package) Root.appendChild(DomPackage) # # Parse each ModuleSurfaceArea # for Module in DistP.ModuleSurfaceArea.values(): Msa = ModuleSurfaceAreaXml() DomModule = Msa.ToXml(Module) Root.appendChild(DomModule) # # Parse Tools # Tmp = MiscellaneousFileXml() ToolNode = Tmp.ToXml2(DistP.Tools, 'Tools') if ToolNode is not None: Root.appendChild(ToolNode) # # Parse MiscFiles # Tmp = MiscellaneousFileXml() MiscFileNode = Tmp.ToXml2(DistP.MiscellaneousFiles, 'MiscellaneousFiles') if MiscFileNode is not None: Root.appendChild(MiscFileNode) XmlContent = Root.toprettyxml(indent=' ') # # Remove empty element # XmlContent = re.sub(r'[\s\r\n]*<[^<>=]*/>', '', XmlContent) # # Remove empty help text element # XmlContent = re.sub(r'[\s\r\n]*<HelpText Lang="en-US"/>', '', XmlContent) # # Remove SupArchList="COMMON" or "common" # XmlContent = \ re.sub(r'[\s\r\n]*SupArchList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*COMMON' '[\s\r\n]*"', '', XmlContent) XmlContent = \ re.sub(r'[\s\r\n]*SupArchList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*common' '[\s\r\n]*"', '', XmlContent) # # Remove <SupArchList> COMMON </SupArchList> # XmlContent = \ re.sub(r'[\s\r\n]*<SupArchList>[\s\r\n]*COMMON[\s\r\n]*' '</SupArchList>[\s\r\n]*', '', XmlContent) # # Remove <SupArchList> common </SupArchList> # XmlContent = \ re.sub(r'[\s\r\n]*<SupArchList>[\s\r\n]*' 'common[\s\r\n]*</SupArchList>[\s\r\n]*', '', XmlContent) # # Remove SupModList="COMMON" or "common" # XmlContent = \ re.sub(r'[\s\r\n]*SupModList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*COMMON' '[\s\r\n]*"', '', XmlContent) XmlContent = \ re.sub(r'[\s\r\n]*SupModList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*common' '[\s\r\n]*"', '', XmlContent) return XmlContent return ''
def FromXml(self, Item, Key): if Key: pass # # Create a package object # Package = PackageObject() # # Header # Tmp = PackageHeaderXml() Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/Header'), 'Header', Package) # # ClonedFrom # Tmp = ClonedFromXml() if XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'): ClonedFrom = Tmp.FromXml( XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'), 'ClonedFrom') Package.SetClonedFromList([ClonedFrom]) # # LibraryClass # for SubItem in XmlList( Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'): Tmp = LibraryClassXml() LibraryClass = Tmp.FromXml(SubItem, 'LibraryClass') Package.SetLibraryClassList(Package.GetLibraryClassList() + [LibraryClass]) if XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations') and \ not XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'): Package.SetLibraryClassList([None]) # # IndustryStandardHeader # for SubItem in XmlList( Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader' ): Tmp = IndustryStandardHeaderXml() Include = Tmp.FromXml(SubItem, 'IndustryStandardHeader') Package.SetStandardIncludeFileList( Package.GetStandardIncludeFileList() + [Include]) if XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes') and \ not XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader'): Package.SetStandardIncludeFileList([None]) # # PackageHeader # for SubItem in XmlList( Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'): Tmp = PackageIncludeHeaderXml() Include = Tmp.FromXml(SubItem, 'PackageHeader') Package.SetPackageIncludeFileList( Package.GetPackageIncludeFileList() + [Include]) if XmlList(Item, '/PackageSurfaceArea/PackageIncludes') and not \ XmlList(Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'): Package.SetPackageIncludeFileList([None]) # # Guid # for SubItem in XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'): Tmp = GuidXml('Package') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry') Package.SetGuidList(Package.GetGuidList() + [GuidProtocolPpi]) if XmlList(Item, '/PackageSurfaceArea/GuidDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'): Package.SetGuidList([None]) # # Protocol # for SubItem in XmlList( Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'): Tmp = ProtocolXml('Package') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry') Package.SetProtocolList(Package.GetProtocolList() + [GuidProtocolPpi]) if XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'): Package.SetProtocolList([None]) # # Ppi # for SubItem in XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'): Tmp = PpiXml('Package') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry') Package.SetPpiList(Package.GetPpiList() + [GuidProtocolPpi]) if XmlList(Item, '/PackageSurfaceArea/PpiDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'): Package.SetPpiList([None]) # # PcdEntry # for SubItem in XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'): Tmp = PcdEntryXml() PcdEntry = Tmp.FromXml2(SubItem, 'PcdEntry') Package.SetPcdList(Package.GetPcdList() + [PcdEntry]) # # Get PcdErrorCommentDict from PcdError in PcdEntry Node # for PcdErrorObj in PcdEntry.GetPcdErrorsList(): PcdErrorMessageList = PcdErrorObj.GetErrorMessageList() if PcdErrorMessageList: Package.PcdErrorCommentDict[(PcdEntry.GetTokenSpaceGuidCName(), PcdErrorObj.GetErrorNumber())] = \ PcdErrorMessageList if XmlList(Item, '/PackageSurfaceArea/PcdDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'): Package.SetPcdList([None]) # # PcdCheck # for SubItem in XmlList( Item, '/PackageSurfaceArea/PcdRelationshipChecks/PcdCheck'): Tmp = PcdCheckXml() PcdCheck = Tmp.FromXml(SubItem, 'PcdCheck') Package.PcdChecks.append(PcdCheck) # # Modules # for SubItem in XmlList( Item, '/PackageSurfaceArea/Modules/ModuleSurfaceArea'): Tmp = ModuleSurfaceAreaXml() Module = Tmp.FromXml(SubItem, 'ModuleSurfaceArea') ModuleDictKey = (Module.GetGuid(), Module.GetVersion(), Module.GetName(), Module.GetModulePath()) Package.ModuleDict[ModuleDictKey] = Module # # MiscellaneousFile # Tmp = MiscellaneousFileXml() MiscFileList = Tmp.FromXml( XmlNode(Item, '/PackageSurfaceArea/MiscellaneousFiles'), 'MiscellaneousFiles') if MiscFileList: Package.SetMiscFileList([MiscFileList]) else: Package.SetMiscFileList([]) # # UserExtensions # for Item in XmlList(Item, '/PackageSurfaceArea/UserExtensions'): Tmp = UserExtensionsXml() UserExtension = Tmp.FromXml(Item, 'UserExtensions') Package.UserExtensionList.append(UserExtension) self.Package = Package return self.Package
def FromXml(self, Filename=None): if Filename != None: self.DistP = DistributionPackageClass() # # Load to XML # self.Pkg = XmlParseFile(Filename) # # Parse Header information # Tmp = DistributionPackageHeaderXml() DistributionPackageHeader = \ Tmp.FromXml(XmlNode(self.Pkg, '/DistributionPackage/DistributionHeader'), 'DistributionHeader') self.DistP.Header = DistributionPackageHeader # # Parse each PackageSurfaceArea # for Item in XmlList(self.Pkg, '/DistributionPackage/PackageSurfaceArea'): Psa = PackageSurfaceAreaXml() Package = Psa.FromXml(Item, 'PackageSurfaceArea') self.DistP.PackageSurfaceArea[(Package.GetGuid(), \ Package.GetVersion(), \ Package.GetPackagePath())] = \ Package # # Parse each ModuleSurfaceArea # for Item in XmlList(self.Pkg, '/DistributionPackage/ModuleSurfaceArea'): Msa = ModuleSurfaceAreaXml() Module = Msa.FromXml(Item, 'ModuleSurfaceArea', True) ModuleKey = (Module.GetGuid(), Module.GetVersion(), Module.GetName(), Module.GetModulePath()) self.DistP.ModuleSurfaceArea[ModuleKey] = Module # # Parse Tools # Tmp = MiscellaneousFileXml() self.DistP.Tools = Tmp.FromXml2( XmlNode(self.Pkg, '/DistributionPackage/Tools'), 'Tools') # # Parse MiscFiles # Tmp = MiscellaneousFileXml() self.DistP.MiscellaneousFiles = \ Tmp.FromXml2(XmlNode(self.Pkg, \ '/DistributionPackage/MiscellaneousFiles'), \ 'MiscellaneousFiles') # # Parse UserExtensions # for Item in XmlList(self.Pkg, '/DistributionPackage/UserExtensions'): Tmp = UserExtensionsXml() self.DistP.UserExtensions.append( Tmp.FromXml2(Item, 'UserExtensions')) # # Check Required Items for XML # self.ValidateDistributionPackage() return self.DistP