XML, анализирующий в [закрытом] Python

Я задал этот тот же вопрос для студенческих полей отбрасывания в списке рассылки самбы, несколько лет назад (http://lists.samba.org/archive/samba/2008-September/143610.html) и ответ работали на нас. Вам нужны расширенные атрибуты acl в Вашей файловой системе (от acl пакета), вот ответ Jeremy Allison...

хорошо, проблема состоит в том, что студенты должны смочь считать содержание каталога, чтобы смочь перетащить новые файлы там. Причина состоит в том, что Samba должен смочь просканировать каталог от их имени, чтобы сделать нечувствительные к регистру поиски.

, Но пока Вы не возражаете позволять студентам видеть названия каждого файлы других, можно настроить Dropbox так, чтобы студенты могли записать в него (и их собственные файлы), но не отредактировать или видеть файлы других.

Во-первых, Вы хотите удостовериться, что файлы, созданные в каталоге DropBox, не принадлежат основной группе студента, но владельцу группы Dropbox direcotry. Так:

chgrp учителя DropBox

для создания принадлежавшим группе учителей. Затем установите setgid, обдумал каталог DropBox, чтобы удостовериться, что файлы, созданные в там, имеют группу владения учителей.

chmod g+s DropBox

Затем гарантирует, что файл в Dropbox может быть переименован или удален только владельцем файла, или владельцем каталога, или корнем (те же полномочия, которые/tmp имеет).

chmod +t DropBox

Затем позволяет студентам писать в каталог путем добавления ACL

setfacl-m g:students:rwx DropBox

, Пока defaul acl установлен так, чтобы у "других" не было полномочий, файлы, записанные студентом в тот каталог, будут принадлежать себе, но будут иметь группу владения "учителей", и студенты не смогут считать каждого файлы других.

, Если необходимо быть причиной файлы, которые будут принадлежать владельцу каталога, не студентами, которые создали их, необходимо настроить отдельную долю, как описано выше, но затем добавить параметр уровня доли:

наследовали владельца = да

, который заставит файлы, созданные в рамках каталогов в той доле принадлежать содержанию каталога, не владельца создания.

12
задан bluish 1 September 2011 в 14:28
поделиться

5 ответов

Если он небольшой и простой, то просто используйте стандартную библиотеку :

from xml.dom.minidom import parse
doc = parse("filename.xml")

Это вернет Дерево DOM, реализующее стандартный API объектной модели документа

. Если в дальнейшем вам потребуется выполнять сложные операции, такие как проверка схемы или запросы XPath, я рекомендую сторонний модуль lxml , который является оболочкой для популярная библиотека libxml2 C.

19
ответ дан 2 December 2019 в 04:25
поделиться

Здесь также очень хороший пример использования minidom с пояснениями.

5
ответ дан 2 December 2019 в 04:25
поделиться

Для большинства моих задач я использовал реализацию Minidom Lightweight DOM с официальной страницы:

from xml.dom.minidom import parse, parseString

dom1 = parse('c:\\temp\\mydata.xml') # parse an XML file by name

datasource = open('c:\\temp\\mydata.xml')
dom2 = parse(datasource)   # parse an open file

dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>')
6
ответ дан 2 December 2019 в 04:25
поделиться

Подойдет ли lxml вашим потребностям? Это первый инструмент, к которому я обращаюсь для синтаксического анализа XML.

3
ответ дан 2 December 2019 в 04:25
поделиться

A few years ago, I wrote a library for working with structured XML. It makes XML simpler by making some limiting assumptions.

You could use XML for something like a word processor document, in which case you have a complicated soup of stuff with XML tags embedded all over the place; in which case my library would not be good.

But if you are using XML for something like a config file, my library is rather convenient. You define classes that describe the structure of the XML you want, and once you have the classes done, there is a method to slurp in XML and parse it. The actual parsing is done by xml.dom.minidom, but then my library extracts the data and puts it in the classes.

The best part: you can declare a "Collection" type that will be a Python list with zero or more other XML elements inside it. This is great for things like Atom or RSS feeds (which was the original reason I designed the library).

Here's the URL: http://home.avvanta.com/~steveha/xe.html

I'd be happy to answer questions if you have any.

1
ответ дан 2 December 2019 в 04:25
поделиться
Другие вопросы по тегам:

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