按照我的团队的要求,我正在尝试减少 xml,使其更短/紧凑。
我所有的构建过程中,下面的格式大约有 1000 行长,但我很确定有一种方法可以使它更紧凑。 有没有办法缩短 Condition 或 SuccessCriteria 标记,以便我使用周围 xml 等属性?我需要考虑具有多个条件或 SuccessCriteria 的案例,如下所示。 从我的搜索来看,相同的属性对多次,看起来我不能拥有具有相同名称的属性,如果我执行类似于流程标签顶部的操作,则会出现这种情况。
我需要始终调用条件名称/值,因为我使用 LINQ 来读取 xml,并且这些条件和成功标准被放入我迭代的列表中。另外,有时我有 1 个条件对,但有时是 2 个,将来可能是 3 个。与 SuccessCriteria 类似。
<?xml version="1.0" encoding="UTF-8"?>
<BuildVerficationRoot>
<Configuration>
<Value Name="emailFrom">[email protected]</Value>
<Value Name="admin_list">[email protected]</Value>
<Value Name="verboseLogFileName">VerifyBuildVerbose.txt</Value>
<Value Name="statsLogProcessVerFileName">ProcessStatusVerificationStats.txt</Value>
<Value Name="project">proj</Value>
<Value Name="version">1.0</Value>
</Configuration>
<BuildVerification>
<codeFreezeTime>19:00</codeFreezeTime>
<build machine="mach-1">
<Process name="Proc1"
startTimeHeader="StartTime"
endTimeHeader="EndTime"
failureColumns="ErrorDescription">
<Condition
name='VersionFile' value="\view\proj\filename1.cs">
</Condition>
<Condition
name='VersionFile' value="\view\proj\filename2.cs">
</Condition>
<SuccessCriteria>
<field>Status</field>
<comparison>equal</comparison>
<value>Success</value>
</SuccessCriteria>
</Process>
</build>
<build machine="co.net\share\folder\folder2\">
<Process name="Stats1"
startTimeHeader="Time"
endTimeHeader="Time"
failureColumns="">
<Condition
name='VersionId' value="1.0">
</Condition>
<Condition
name='MediaType' value="Incr">
</Condition>
<SuccessCriteria>
<field>Status</field>
<comparison>equal</comparison>
<value>Success</value>
</SuccessCriteria>
</Process>
<Process name="MediaStats"
startTimeHeader="EndTime"
endTimeHeader="EndTime"
failureColumns="">
<Condition
name1='Ver1' name2="Ver2">
</Condition>
<SuccessCriteria>
<field>MediaType</field>
<comparison>equal</comparison>
<value>Full</value>
</SuccessCriteria>
</Process>
<Process name="MediaStats"
startTimeHeader="EndTime"
endTimeHeader="EndTime"
failureColumns="">
<Condition
name1='Ver1' name2="Ver2">
</Condition>
<SuccessCriteria>
<field>MediaType</field>
<comparison>equal</comparison>
<value>Incr</value>
</SuccessCriteria>
</Process>
<Process name="ProcessingStats"
startTimeHeader="StartTime"
endTimeHeader="EndTime"
failureColumns="">
<Condition
name='Project' value="1.0">
</Condition>
<SuccessCriteria>
<field>Deliverables</field>
<comparison>notEqual</comparison>
<value>""</value>
</SuccessCriteria>
<SuccessCriteria>
<field>InInstallers</field>
<comparison>notEqual</comparison>
<value>""</value>
</SuccessCriteria>
<SuccessCriteria>
<field>MakePackage</field>
<comparison>notEqual</comparison>
<value>""</value>
</SuccessCriteria>
<SuccessCriteria>
<field>Publish</field>
<comparison>notEqual</comparison>
<value>""</value>
</SuccessCriteria>
</Process>
</build>
</BuildVerification>
</BuildVerficationRoot>
我尝试对第一个进程执行以下操作,但出现错误:
c# System.Xml>XmlException:“名称”是重复的属性名称。
<Process name="SpinFileVersionStats"
startTimeHeader="StartTime"
endTimeHeader="EndTime"
failureColumns="ErrorDescription">
<Condition name='VersionFile' value="\view\proj\filename1.cs"
name='VersionFile2' value="\view\proj\filename2.cs"></Condition>
<SuccessCriteria>
<field>Status</field>
<comparison>equal</comparison>
<value>Success</value>
</SuccessCriteria>
</Process>
所以我的问题是,是否有更紧凑的方式在 xml 中显示相同的信息?我不是在谈论删除条件标签周围的回车符。 谢谢!
XML 属性名称必须是唯一的格式良好的 XML 中的每个元素。
您可以通过调整元素与属性设计使您的XML更加紧凑和一致:
<Process name="Proc1"
startTimeHeader="StartTime"
endTimeHeader="EndTime"
failureColumns="ErrorDescription">
<Condition VersionFile="\view\proj\filename1.cs"/>
<Condition VersionFile="\view\proj\filename2.cs"/>
<SuccessCriteria field="Status"
comparison="equal"
value="Success"/>
</Process>
name
属性的值可能会
在语法上直接写为 XML 属性名称。