我如何检查 XML 标签中的属性是否未定义 JavaScript (Mirth Connect)
how do i check if attribute from XML tag is undefined JavaScript (Mirth Connect)
我想检查 XML 标签中的属性是否存在。
这里是示例 xml 标签:
<value @code="">
我想检查以下条件..
- 如果标签存在。
- 如果@code 存在。
- 如果@code 为空。
目前我正在检查以下情况:
if(msg['value'])
{
hasValue='true';
if(msg['value']['@code'])
{
hasCode='true';
}else
{
hasCode='false';
}
}
但此条件 returns hasValue 标志始终为真。即使@code 是 missing/undefined.
有没有办法检查@code 是否为 undefined/missing?
您可以使用hasOwnProperty()
检查元素或属性是否存在,您可以使用.toString()
检查属性值是否为空。
if(msg.hasOwnProperty('value')) {
hasValue='true';
if(msg.value.hasOwnProperty('@code') && msg.value['@code'].toString()) {
hasCode='true';
} else {
hasCode='false';
}
}
hasOwnProperty 通常不用于 xml(对于遵循 javascript 标签的人,mirth 嵌入了 Mozilla Rhino javascript 引擎,该引擎使用已弃用的 e4x 标准来处理 xml.) 当有多个名为 value
的子元素时,hasOwnProperty 的行为不符合预期。根据命名约定,我假设可以有多个具有不同代码的值。
这将为 hasCode 创建一个数组,该数组为每次出现的名为 value 的子元素保存一个布尔值。
var hasCode = [];
var hasValue = msg.value.length() > 0;
for each (var value in msg.value) {
// Use this to make sure the attribute named code exists
// hasCode.push(value['@code'].length() > 0);
// Use this to make sure the attribute named code exists and does not contain an empty string
// The toString will return an empty string even if the attribute does not exist
hasCode.push(value['@code'].toString().length > 0);
}
(虽然 length
是字符串上的 属性,但它是 xml 对象上的方法,因此括号是正确的。)
我想检查 XML 标签中的属性是否存在。
这里是示例 xml 标签:
<value @code="">
我想检查以下条件..
- 如果标签存在。
- 如果@code 存在。
- 如果@code 为空。
目前我正在检查以下情况:
if(msg['value'])
{
hasValue='true';
if(msg['value']['@code'])
{
hasCode='true';
}else
{
hasCode='false';
}
}
但此条件 returns hasValue 标志始终为真。即使@code 是 missing/undefined.
有没有办法检查@code 是否为 undefined/missing?
您可以使用hasOwnProperty()
检查元素或属性是否存在,您可以使用.toString()
检查属性值是否为空。
if(msg.hasOwnProperty('value')) {
hasValue='true';
if(msg.value.hasOwnProperty('@code') && msg.value['@code'].toString()) {
hasCode='true';
} else {
hasCode='false';
}
}
hasOwnProperty 通常不用于 xml(对于遵循 javascript 标签的人,mirth 嵌入了 Mozilla Rhino javascript 引擎,该引擎使用已弃用的 e4x 标准来处理 xml.) 当有多个名为 value
的子元素时,hasOwnProperty 的行为不符合预期。根据命名约定,我假设可以有多个具有不同代码的值。
这将为 hasCode 创建一个数组,该数组为每次出现的名为 value 的子元素保存一个布尔值。
var hasCode = [];
var hasValue = msg.value.length() > 0;
for each (var value in msg.value) {
// Use this to make sure the attribute named code exists
// hasCode.push(value['@code'].length() > 0);
// Use this to make sure the attribute named code exists and does not contain an empty string
// The toString will return an empty string even if the attribute does not exist
hasCode.push(value['@code'].toString().length > 0);
}
(虽然 length
是字符串上的 属性,但它是 xml 对象上的方法,因此括号是正确的。)