Если ваши ссылки хранятся иначе, скажем, client
имеет массив из submission_ids
, то аналогично принятому ответу вы можете определить следующее на submissionSchema
:
submissionSchema.pre('remove', function(next) {
Client.update(
{ submission_ids : this._id},
{ $pull: { submission_ids: this._id } },
{ multi: true }) //if reference exists in multiple documents
.exec();
next();
});
, который удалит идентификатор отправки из ссылочных массивов клиентов в submission.remove()
.
Предполагая, что имена «атрибутов данных» всегда начинаются с «data-», вы можете удалить их следующим образом:
for el in tree.xpath("//*"):
for attr in el.attrib:
if attr.startswith("data-"):
el.attrib.pop(attr)
Вы можете очистить атрибуты, как это
import re
def strip_attribute(data):
p = re.compile('data-[^=]*="[^"]*"')
print(p)
return p.sub('', data)
print(strip_attribute('with attribute'))
Может быть, это то, что вы ищете:
from lxml import etree
code = """
<html>
<ul>
<li data-i="sdfdsf">something</li>
<li data-i="dsfd">something</li>
</ul>
<p data-para="cvcv">content</p>
</html>
"""
xml = etree.XML(code)
elements = list(xml.iter())
for element in elements:
if len(element.text.strip())>0:
print('<'+element.tag+'>'+element.text+'</'+element.tag+'>')
Вывод:
<li>something</li>
<li>something</li>
<p>content</p>