1.文件头

XML文件头有XML声明与DTD文件类型声明组成。其中DTD文件类型声明是可以缺少的,关于DTD声明这里不做介绍,而XML声明是必须要有的,以使文件符合XML的标准规格。

在PackageContents.XML文件中的第一行代码几位XML的声明:

代表的意识是:

"" 代表一条指令的结束;

"xml"代表此文件是XML文件;

" version="1.0" "代表文件用的是XML1.0标准;

" encoding="utf-8" "代表此文件所用的字符集。

注意: XML声明必须出现在文档的第一行。

2.文件体

文件体中包含的是XML文件的内容,XML元素是XML文件内容的基本单元。从语法上讲,一个元素包含一个起始标记、一个结束标记以及标记之间的数据内容。

XML元素与HTML元素的格式基本相同,其格式如下:

<标记名称 属性名1="属性值1" 属性名2="属性值2"……>内容</标记名称>

所有数据内容都必须在某个标记的开始和结束标记内,而每个标记又必须包含在另一个标记的开始于结束标记内,形成嵌套式的分布,只有最外层的标记不必被其他的标记所包含。最外层的是根元素(Root),又称文件(Document)元素,所有的元素都包含在根元素内。

在PackageContents.XML文件中,根元素就是,根元素必须而且只能有一个。SchemaVersion等元素为属性,CompanyDetails等元素为"内容",每条内容又有自己的属性及内容,多层嵌套。

PackageContents.XML文件中各元素有些是必须具备的,有些是可选的。

大部分的属性,通过其名称就能知道其作用,例如Name,Description等,下面支队个别元素的注意事项进行解释:

RuntimeRequirements元素,虽然是可选元素,但作者建议保留,理由如下:属性Platform,SeriesMin,seriesMax可以指定插件的运行平台及版本。

例如在Civil 3D中运行相应的插件,可以通过设置Platform的值为Civil 3D实现,运行其他基于AutoCAD的产品时,该插件并不会被加载;如果所有基于AutoCAD的产品都加载此插件,可以通过设置Platform的值为AutoCAD*实现,即示例中所展示的状态。

SeriesMin,SeriesMax限制了插件支持的AutoCAD版本,不同的AutoCAD版本,需要加载不同版本的插件,可以通过指定这两项元素的值来实现。示例中,SeriesMin="R19.1",SeriesMax="R22.0",表示从AutoCAD 2014版至AutoCAD 2018版均能加载此插件。如何查询产品名称中版本与内部版本之间的关系,可以利用命令AcadVer来实现。

java XML文档中使用的元素必须使用命名空间 xml文档所使用的字符集_xml

另外一个需要注意的问题是文件路径均为相对路径,均相对于根.bundle文件夹。

除了以上的实例,读者还可以研究其他的软件包,例如Civil3DSnoopDB.bundle来了解程序包的结构及XML文件中的元素。

3.示例文件

PackageContents.XML

<?xml version="1.0" encoding="utf-8" standalone="no"?>


 

 
<ApplicationPackage

   SchemaVersion="1.0"

   AppVersion="4.70.9"

   AutodeskProduct="AutoCAD"

   Description="Autodesk BIM 360 Glue AutoCAD 2019 Add-in"

   Author="Autodesk"

   ProductCode="{F4C628E2-41FF-5AAF-8985-DA26BBF5FCB2}"

   UpgradeCode="{D3A7FFB2-B829-4EA1-BD0C-E681847D1E92}"

   Name="Autodesk BIM 360 Glue AutoCAD 2019 Add-in">

   <RuntimeRequirements

      OS="Win32|Win64"

      Platform="AutoCAD|AutoCAD*"

      SeriesMin="23.0"

      SeriesMax="23.0" />

   <CompanyDetails

      Name="Autodesk"

      Email="andrew.gleadall@autodesk.com" />

   <Components

      Description="Win32 parts">

      <RuntimeRequirements

         OS="Win32"

         Platform="AutoCAD|AutoCAD*"

         SeriesMin="23.0"

         SeriesMax="23.0" />

      <ComponentEntry

         AppName="BIM360Glue"

         AppType=".Net"

         Version="4.70.9"

         ModuleName="./Contents/Win32/BIM360GlueAutoCAD2019Addin.dll"

         AppDescription="Main .NET Module"

         LoadOnAutoCADStartup="True">

         <Commands

            GroupName="ADESK_BIM360GLUE">

            <Command

               Local="ShowBIM360"

               Global="ShowBIM360"

               Description="Command to show BIM360 plugin" />

            <Command

               Local="HideBIM360"

               Global="HideBIM360"

               Description="Command to hide BIM360 plugin" />

            <Command

               Local="Glue"

               Global="Glue"

               Description="Glue" />

            <Command

               Local="ClashPinpoint"

               Global="ClashPinpoint"

               Description="ClashPinpoint" />

            <Command

               Local="BIM360_Attach"

               Global="BIM360_Attach"

               Description="Attach" />

         </Commands>

      </ComponentEntry>

      <ComponentEntry

         AppName="BIM360Glue"

         Version="4.70.9"

         ModuleName="./Contents/Win32/BIM360GlueAddinsCommon.dll"

         AppDescription="BIM360GlueAddinsCommon"

         AppType="Dependency" />


 
      <ComponentEntry

         AppName="BIM360Glue"

         Version="4.70.9"

         ModuleName="./bim360.cuix" />


 
   </Components>

   <Components

      Description="Win64 parts">

      <RuntimeRequirements

         OS="Win64"

         Platform="AutoCAD|AutoCAD*"

         SeriesMin="23.0"

         SeriesMax="23.0" />

      <ComponentEntry

         AppName="BIM360Glue"

         AppType=".Net"

         Version="4.70.9"

         ModuleName="./Contents/Win64/BIM360GlueAutoCAD2019Addin.dll"

         AppDescription="Main .NET Module"

         LoadOnAutoCADStartup="True">

         <Commands

            GroupName="ADESK_BIM360GLUE">

            <Command

               Local="addHorizontalRibbon"

               Global="addHorizontalRibbon"

               Description="addHorizontalRibbon" />

            <Command

               Local="removeHorizontalRibbon"

               Global="removeHorizontalRibbon"

               Description="removeHorizontalRibbon" />

            <Command

               Local="Glue"

               Global="Glue"

               Description="Glue" />

            <Command

               Local="ClashPinpoint"

               Global="ClashPinpoint"

               Description="ClashPinpoint" />

            <Command

               Local="BIM360_Attach"

               Global="BIM360_Attach"

               Description="Attach" />

         </Commands>

      </ComponentEntry>

      <ComponentEntry

         AppName="BIM360Glue"

         Version="4.70.9"

         ModuleName="./Contents/Win64/BIM360GlueAddinsCommon.dll"

         AppDescription="BIM360GlueAddinsCommon"

         AppType="Dependency" />


 
      <ComponentEntry

         AppName="BIM360Glue"

         Version="4.70.9"

         ModuleName="./bim360.cuix" />


 
   </Components>

</ApplicationPackage>