XML文件基础
https://c3d.club/xml/basic/2018/12/27/xml-file-base.html
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来实现。
另外一个需要注意的问题是文件路径均为相对路径,均相对于根.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>
XML文件基础的更多相关文章
- JAVA中通过Jaxp操作XML文件基础
Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询 ...
- XML文件基础,DTD校验文件编写,Schema文件的简单使用
dtd <!-- <!ELEMENT 元素(子元素,...)> --> <!ELEMENT students (student+,cat*) > <!ELEM ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- 30天C#基础巩固----查找XML文件元素
一:XML文档 了解xml文档. 利用代码来创建XML文档. //引用命名空间+using System.Xml; XmlDocument xdoc=new XmlDocument(); XmlDec ...
- android基础知识13:AndroidManifest.xml文件解析
注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- C#基础精华06(Linq To XML,读取xml文件,写入xml)
1.XML概述: 可扩展标记语言XML(eXtensible Markup Language)是一种简单灵活的文本格式的可扩展标记语言,侧重于存储数据. 2.XML特点 xml 标记语言 html x ...
- java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class
package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; impo ...
- java基础之概谈xml文件解析
XML已经成为一种非常通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. 诸多web应用框架,其可配置的编程方式,给我们的开发带来了非常大程度的便捷,但细细 ...
- 基础学习笔记之opencv(3):haartraining生成.xml文件过程[转]
1.准备正负样本: 在上一讲http://www.cnblogs.com/tornadomeet/archive/2012/03/27/2420088.html 中,我们已经收集到了训练所用的正样本. ...
随机推荐
- win7配置免安装mysql5.6.19过程具体解释
本文主要介绍免安装配置mysql5.6.19的过程,整个过程中自己出现非常多次失误,经过整理,现将一次可成功的过程记录下来,供大家參考. 准备 在mysq官网 http://dev.mysql.com ...
- C++实现顺序栈的基本功能
栈是限定仅在表头进行插入和删除操作的线性表.有着先进后出的特点(FILO): 如今我来动手实现栈的基本本功能练练手: 定义栈的头文件例如以下: #ifndef CSTOCK_H_ #define CS ...
- Windows10 显示库、隐藏6个目录、隐藏OneDrive
Win10的资源管理器与之前的版本号最大的不同就是默认隐藏了库,又在此电脑中显示了6个用户目录. 但因为习惯了使用库进行文件的管理,这一改变有些令人不习惯. 以下就让我来教大家怎样显示库.以及隐藏这6 ...
- iOS 隐藏NavigationBar的方法
使用下面方法: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationCon ...
- 淘宝CDN系统架构
存储与架构分论坛上,淘宝网技术委员会主席,淘宝网核心工程师章文嵩向我们详细介绍了淘宝网图片处理与存储系统的架构.章文嵩博士的演 讲日程包括了 淘宝的整个系统架构.淘宝图片存储系统架构,淘宝网 ...
- [Plugin] 文件上传利器SWFUpload使用指南
SWFUpload是 一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在项目中用过几次,但它的配置参数太多了,用过后就忘记怎么用了,到以后要用时又得 到官网上看它的文档,真是太烦了. ...
- LeetCode.2-两个数字相加(Add Two Numbers)
这是悦乐书的第340次更新,第364篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第1题(顺位题号是2).给定两个非空链表,表示两个非负整数. 数字以相反的顺序存储, ...
- 数组和String调用方法时,值是否改变(包含可变参数)
package com.wh.encapsulation; import java.util.Arrays; /** * @author 王恒 * @datetime 2017年4月5日 上午9:33 ...
- 剖析Promise内部结构,一步一步实现一个完整的、能通过所有Test case的Promise类
本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,建议先了解Promise的使用 Promise标准解读 1.只有一个then方法,没有catch,ra ...
- MemCached总结三:PHP的memcached管理接口
在Web系统中应用MemCached缓存技术,必须使用客户端API(PHP)进行访问,这样才能将用户请求的动态数据,缓存到memcached服务器中,来减少对数据库的访问压力.PHP中提供了用于内存缓 ...