Вставка данных в XML с использованием Basex - PullRequest
5 голосов
/ 23 февраля 2012

Я храню два документа 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?

1 Ответ

9 голосов
/ 23 февраля 2012

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

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

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

Есть хорошийучебник, Обновление XQuery для нетерпеливых , предоставляемых xmlmind.com.

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

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

...