WiX XmlConfig:用于在XmlConfig中嵌套XmlConfig
发布时间:2020-12-16 07:44:57 所属栏目:百科 来源:网络整理
导读:将XmlConfig元素嵌套到另一个XmlConfig元素中的目的和/或收益(除了增加创建/删除属性的可读性之外)是什么? 我所指的例子(我正在使用WiX 3.6): util:XmlConfig ... util:XmlConfig ... //util:XmlConfig 简短的回答:选项的唯一目的是嵌套 util:XmlConfig
将XmlConfig元素嵌套到另一个XmlConfig元素中的目的和/或收益(除了增加创建/删除属性的可读性之外)是什么?
我所指的例子(我正在使用WiX 3.6): <util:XmlConfig ...> <util:XmlConfig ... /> </util:XmlConfig>
简短的回答:选项的唯一目的是嵌套< util:XmlConfig>元素是能够以更易读的方式向新创建的元素添加/删除属性.所以,这基本上就是你所假设的.
考虑以下初始XML文件: <?xml version="1.0" encoding="utf-8"?> <cars> <car name="ford" type="minivan"/> <car name="toyota" type="sedan"/> <motos> <moto name="honda" model="shadow" type="cruiser" /> </motos> </cars> 为了添加另一个< moto>对它来说,可以使用以下WiX片段: <util:XmlConfig Id="elem1" Action="create" ElementPath="cars/motos" File="$(var.XmlFilePath)" Node="element" On="install" Name="moto"> <util:XmlConfig Id="elem11" ElementId="elem1" Name="name" Value="yamaha" File="$(var.XmlFilePath)" /> <util:XmlConfig Id="elem12" ElementId="elem1" Name="type" Value="chopper" File="$(var.XmlFilePath)" /> </util:XmlConfig> 因此,XML文件最终如下: <?xml version="1.0" encoding="utf-8"?> <cars> <car name="ford" type="minivan"/> <car name="toyota" type="sedan"/> <motos> <moto name="honda" model="shadow" type="cruiser" /> <moto name="yamaha" type="chopper" /> </motos> </cars> 这里要注意的事情: > Action属性不能在内部XmlConfig元素中定义,这是逻辑的 – 它与父元素的属性相同 无论如何,如果您确实想要创建XML子树结构,那么最终作为结果XML中的嵌套元素的元素是由放置在同一级别上的XmlConfig元素生成的.那么,以下片段: <util:XmlConfig Id="elem1" Action="create" ElementPath="cars/motos" File="$(var.XmlFilePath)" Node="element" On="install" Name="moto" Sequence="1"> <util:XmlConfig Id="elem11" ElementId="elem1" Name="name" Value="yamaha" File="$(var.XmlFilePath)" /> <util:XmlConfig Id="elem12" ElementId="elem1" Name="type" Value="chopper" File="$(var.XmlFilePath)" /> </util:XmlConfig> <util:XmlConfig Id="elem2" Action="create" ElementPath="cars/motos/moto[[]@name='yamaha'[]]" File="$(var.XmlFilePath)" Node="element" On="install" Name="extra" Sequence="2"> <util:XmlConfig Id="elem21" ElementId="elem2" File="$(var.XmlFilePath)" Name="bags" Value="leather" /> </util:XmlConfig> 将如下转换XML: <?xml version="1.0" encoding="utf-8"?> <cars> <car name="ford" type="minivan"/> <car name="toyota" type="sedan"/> <motos> <moto name="honda" model="shadow" type="cruiser"/> <moto name="yamaha" type="chopper"> <extra bags="leather"/> </moto> </motos> </cars> 请注意以下事项: > XmlConfig元素放在同一级别,尽管它们会在生成的XML中生成嵌套元素 希望现在这更有意义.对不起,最初给出了错误的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |