удалить все атрибуты данных с помощью etree из всех элементов

Если ваши ссылки хранятся иначе, скажем, 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().

2
задан Tiw 11 March 2019 в 12:21
поделиться

3 ответа

Предполагая, что имена «атрибутов данных» всегда начинаются с «data-», вы можете удалить их следующим образом:

for el in tree.xpath("//*"):
    for attr in el.attrib:
        if attr.startswith("data-"):
            el.attrib.pop(attr)
0
ответ дан mzjn 11 March 2019 в 12:21
поделиться

Вы можете очистить атрибуты, как это


import re
def strip_attribute(data):
    p = re.compile('data-[^=]*="[^"]*"')
    print(p)
    return p.sub('', data)
print(strip_attribute('with attribute'))

0
ответ дан kubarik 11 March 2019 в 12:21
поделиться

Может быть, это то, что вы ищете:

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>
0
ответ дан Jack Fleeting 11 March 2019 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: