3

我想检查 XML 标记中的属性是否存在。

这是示例 xml 标记: <value @code="">

我想检查以下条件..

  1. 如果标签存在。
  2. 如果@code 存在。
  3. 如果@code 为空。

目前我正在检查以下情况:

if(msg['value'])
{
  hasValue='true';
  
  if(msg['value']['@code'])
  {
      hasCode='true';
  }else
  {
    hasCode='false';
  }
  
}

但此条件返回hasValue标志始终为真。即使@code 丢失/未定义。

有没有办法检查@code 是否未定义/丢失?

4

2 回答 2

2

hasOwnProperty 通常不用于 xml(对于关注 javascript 标签的人,mirth 嵌入了 Mozilla Rhino javascript 引擎,该引擎使用已弃用的 e4x 标准来处理 xml。)当有多个名为value. 根据命名约定,我假设可以有多个具有不同代码的值。

这将为 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 对象的方法,所以括号是正确的。)

于 2018-12-03T18:28:16.883 回答
0

可以hasOwnProperty()用来检查元素或属性是否存在,也可以.toString()用来检查属性值是否为空。

if(msg.hasOwnProperty('value')) {
  hasValue='true';

  if(msg.value.hasOwnProperty('@code') && msg.value['@code'].toString()) {
    hasCode='true';
  } else {
    hasCode='false';
  }
}
于 2018-12-03T01:31:55.127 回答