Как добавить строковое содержимое в узлы xml (пустой узел / добавить к существующему содержимому), используя XPath Query - PullRequest
0 голосов
/ 22 мая 2011

У меня уже есть следующая структура xml с дочерними узлами, такими как title, desc, symp, diag, Treat addinfo и т. Д. Я хочу проверить, содержит ли addinfo какую-либо вещь, а также добавить к ней некоторую строку, например "Это дополнительная информация».Есть много названий болезней, которые мне нужно проверить тегом addifo в соответствии с тегом title-title болезни.

<chapter>
  <disease type="Name">
    <title>Name</title>
    <desc>--------------</desc>
    <symp>--------------</symptoms>
    <diag>-------------</diagnosis>
    <treat>-------------</treatment>
    <addinfo></addinfo>
  </disease>
</chapter

>

Я использую запрос XPath для поиска содержимого тегов в соответствии сназвание болезни.Спасибо

Ответы [ 2 ]

0 голосов
/ 22 мая 2011

XPath может только извлекать информацию из вашего документа, но не может ее изменять.

XQuery может создавать измененную копию вашего документа, но это не особенно просто, потому что вам нужно явно скопировать все части, которые выне хочу менять.

XSLT - лучшая ставка для создания модифицированной копии документа;или XQuery Update Facility, если вы предпочитаете.

0 голосов
/ 22 мая 2011

Вы можете использовать XPath как этот, чтобы видеть, пусто ли addinfo или нет: //addinfo[not(node())]

UPDATE:

Хорошо, теперь я полностью потерялся в том, что ты хочешь. Это звучит как очень простая проблема. Вы должны создать какой-то getText() метод, который дает XML-узел, получает связанный с ним текст (если таковой имеется или возвращает нулевую или пустую строку). Затем вы должны выполнить обход всех болезней и для каждой болезни выполнить свою логику: if( string.isNullOrEmpty(getText(disease, "addinfo")) ) { // do something } - если вы хотите проверить, пусто ли addinfo, или добавить что-то в него и т. Д.

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