Как я могу проверить, является ли атрибут из тега XML неопределенным JavaScript (Mirth Connect) - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу проверить, присутствует ли атрибут в теге XML.

вот пример тега xml: <value @code="">

i Хотите проверить следующееусловия ..

  1. , если присутствует тег.
  2. , если присутствует @code.
  3. , если @code равен нулю.

В настоящее время я проверяю состояние, как показано ниже:

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

, но это условие возвращает hasValue флаг всегда true.Даже если @code отсутствует / undefined.

Есть ли способ проверить, является ли @code неопределенным / отсутствует?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

hasOwnProperty обычно не используется для xml (для людей, следующих за тегом javascript, mirth встраивает движок JavaScript Mozilla Rhino, который использует устаревший стандарт e4x для обработки xml.) HasOwnProperty не работает должным образом, когда существует несколько именованных дочерних элементов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, поэтому круглые скобки правильные.)

0 голосов
/ 03 декабря 2018

Вы можете использовать hasOwnProperty(), чтобы проверить наличие элемента или атрибута, и вы можете использовать .toString(), чтобы проверить, является ли значение атрибута пустым или нет.

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

  if(msg.value.hasOwnProperty('@code') && msg.value['@code'].toString()) {
    hasCode='true';
  } else {
    hasCode='false';
  }
}
...