Как я могу получить идентификатор элемента из синтаксического анализа XML в Google Apps Script - PullRequest
0 голосов
/ 06 августа 2020

Xml Код

<directory>
 <fieldset>
  <field id="displayName">Display name</field>
  
 </fieldset>
 <employees>
  <employee id="123">
   <field id="displayName">John Doe</field>
   
  </employee>
  <employee id="160">
   <field id="displayName">Jane Doe</field>
   
  </employee>

Я могу проанализировать информацию с помощью XmlService.parse и получить значение в каждом элементе, но я не могу получить номер идентификатора сотрудника / элемента

Когда Я запускаю это:

var roots = document.getRootElement().getChild('employees').getChildren();

Я получаю отдельные элементы, но не могу получить идентификатор

 [[Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>]]

Ответы [ 2 ]

2 голосов
/ 07 августа 2020
  • Вы хотите получить 123 и 160 из следующих xml данных.

      <directory>
        <fieldset>
          <field id="displayName">Display name</field>
        </fieldset>
        <employees>
          <employee id="123">
            <field id="displayName">John Doe</field>
          </employee>
          <employee id="160">
            <field id="displayName">Jane Doe</field>
          </employee>
    
  • Вы хотите добиться этого с помощью XmlService скрипта Google Apps.

Точка модификации:

  • В вашем случае roots возвращает employee. Таким образом, используя это, вы можете получить атрибут id.

Измененный скрипт:

Когда используются данные, указанные выше xml, пример скрипта выглядит следующим образом. В этом примере </employees></directory> добавляется к образцу xml данных.

function myFunction() {
  const xml = `<directory>
  <fieldset>
    <field id="displayName">Display name</field>
  </fieldset>
  <employees>
    <employee id="123">
      <field id="displayName">John Doe</field>
    </employee>
    <employee id="160">
      <field id="displayName">Jane Doe</field>
    </employee>
  </employees>
</directory>`;
  var document = XmlService.parse(xml);
  var roots = document.getRootElement().getChild('employees').getChildren();
  var ids = roots.map(e => e.getAttribute("id").getValue());
  console.log(ids);  // [123, 160]
}

Примечание:

  • В этом случае используйте сценарий с V8 .

  • Если вы хотите получить и id из employee, и значение field, вы также можете использовать следующий скрипт.

      var ids = roots.map(e => ({id: e.getAttribute("id").getValue(), name: e.getChild("field").getText()}));
    
    • В этом случае извлекается [ { id: '123', name: 'John Doe' }, { id: '160', name: 'Jane Doe' } ].
  • Когда структура приведенных выше примеров xml данных отличается от ваших фактических данных, измененный сценарий может не работать. Так что будьте осторожны.

Ссылка:

0 голосов
/ 06 августа 2020

(function() {
   var roots =document.getElementsByTagName("employees")[0].children;
   
   for(k=0;k<roots.length;k++){
    var id=roots[k].getAttribute("id")
    console.log(id);
   
   }
   
   

})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<directory>
 <fieldset>
  <field id="displayName">Display name</field>
 </fieldset>
 <employees>
  <employee id="123">
   <field id="displayName">John Doe</field>
  </employee>
  <employee id="160">
   <field id="displayName">Jane Doe</field>
  </employee>
  </employees>
 </directory>

вы можете получить доступ к идентификатору, подобному этому, используя javascript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...