XmlPeek 空字符串导致失败

XmlPeek empty string causes failure

所以在我的目标文件中,有一行看起来像这样:

<XmlPeek Namespaces="" XmlInputPath="file.xml" Query="/data/@AttributeOne">
  <Output TaskParameter="Result" ItemName="my_AttributeOne" />
</XmlPeek>

在"file.xml",我有:

<data AttributeOne="abc" AttributeTwo="def" />

它还会读取一些其他属性。

当属性有数据时,一切正常...但是当我将 AttributeOne 保留为空字符串 ("") 时,XmlPeek 会出现以下错误:

The "XmlPeek" task's outputs could not be retrieved from the "Result" parameter. Parameter "includeEscaped" cannot have zero length.

如果我完全删除该属性,它可以正常工作(生成的项目显然是空白的,这是可以理解的)

问题是...我如何在不破坏块的情况下确定空白属性的值...是通过对值进行预测试,还是通过正确处理空白,或其他一些方式。


约束:唯一真正的要求是坚持内置任务 (XmlPeek)...我知道社区任务中的 XmlRead...出于各种原因,我想使用 out-of -开箱即用的任务。

提前致谢!

错误发生是因为空字符串被用作项目标识符。我猜标识符不能是空字符串。如果您删除该属性,则结果为 null,并且不会创建任何项目,因此不会引发错误。

也许可以尝试 return 结果作为 属性 而不是项目。

如果您不需要区分被省略的属性和具有空值的属性,您可以通过在查询中插入条件 [@AttributeOne!=''] 来防止错误,如下所示。

<XmlPeek Namespaces="" XmlInputPath="file.xml" Query="/data[@AttributeOne!='']/@AttributeOne">
  <Output TaskParameter="Result" ItemName="my_AttributeOne" />
</XmlPeek>