Вставка данных в XML с использованием Basex

Я храню два XML-документа, а именно больницу и офис, в BaseX.

Ниже приведен офисный xml:

<Staff>
    <Employee Name="Brian">
        <Personal>
            <SSN> 666-66-6666 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo> David </AccountableTo>
        </StaffInfo>
    </Employee>
    <Employee Name="David">
        <Personal>
            <SSN> 555-55-5555 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo />
        </StaffInfo>
    </Employee>
</Staff>

В этом XML я хочу добавить одного или нескольких сотрудников. Как добавить элементы с помощью BaseX?


person Sadesh Kumar N    schedule 23.02.2012    source источник


Ответы (1)


XQuery имеет средство обновления, официальную рекомендацию W3C, которая называется XQuery Update для изменения структуры документа.

Вы можете использовать обновления следующим образом:

Учитывая, что вы создали базу данных сотрудников с помощью команды:

CREATE DB office /path/to/office.xml

Теперь вы можете использовать средство обновления XQuery и выполнить следующий запрос:

let $up := <Employee Name="Joe">
    <Personal>
      <SSN>666-66-1234</SSN>
    </Personal>
    <StaffInfo>
      <Position>Doctor</Position>
      <AccountableTo>Jeff</AccountableTo>
    </StaffInfo>
  </Employee>

  return
insert node $up as last into doc('office')/Staff

Это добавит узел, на который ссылается $up, в последней позиции в вашей базе данных staff

Вики-страница с документацией по BaseX содержит дополнительную информацию об обновлениях:

Существует хорошее руководство XQuery Update для нетерпеливых, предоставленное xmlmind.com.

Конечно, вы можете использовать API для выполнения этих запросов, для начала я бы посоветовал вам придерживаться графического интерфейса, чтобы вы могли напрямую видеть результаты.

Надеюсь, что это помогло, не стесняйтесь спрашивать дополнительную информацию; либо здесь, либо в официальном списке рассылки BaseX.

person michael    schedule 23.02.2012
comment
Спасибо за информацию, позвольте мне попробовать и реализовать с помощью информации, предоставленной Майклом,.. - person Sadesh Kumar N; 23.02.2012