Функция XML-тега


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

Он используется для создания XML-теги (строки). Аргумент контент может быть строка, число и т. д. но если это DateTime и я хочу отформатировать его должным образом. Также, если нет контента, тегов не должно быть вынесено (возвращает пустую строку).

def tag(tagName, content):
  if isinstance(content, datetime):
    content = content.strftime('%Y%m%d%H%M')
  else:
    content = str(content)

  if content:
    return "<" + tagName + ">" + content + "</" + tagName + ">"

  return ""

Пожалуйста, просветите меня!



220
2
задан 14 июня 2011 в 12:06 Источник Поделиться
Комментарии
3 ответа

Попробуйте это:

return "<%s>%s</%s>" % (tagName, content, tagName)

е.г:

def tag(tagName, content):
if isinstance(content, datetime):
content = content.strftime('%Y%m%d%H%M')
else:
content = str(content)

if content:
return "<%s>%s</%s>" % (tagName, content, tagName)

return ""

Немного более привлекательным, если это то, что вы хотите?

2
ответ дан 6 июля 2011 в 06:07 Источник Поделиться

Всегда используйте XML-библиотека для чтения и записи XML.
Шить XML-файле вместе с конкатенацией строк не попадает в точку с помощью XML.

4
ответ дан 14 июня 2011 в 12:06 Источник Поделиться

Я буду критиковать общим дизайном тэг функции.

тег не может принять общего ввода, потому что это будет производить недопустимый XML. Это особые случаи пустое содержание, что не позволяет в целом полезными; нет никакого способа, чтобы использовать его, чтобы получить пустой тег (ломая слабое требование хорошего API: делая простые вещи можно). Это имеет смысл только как частный часть немного более крупной программы, которая производит корректный XML, который вы не включили.

2
ответ дан 14 июня 2011 в 10:06 Источник Поделиться