Хотя несколько датировано, Код Как и Pythonista: Idiomatic Python рекомендует join()
по +
в этом разделе . Как и PythonSpeedPerformanceTips в своем разделе в конкатенации строки со следующим отказом:
Точность этого раздела оспаривается относительно более позднего версии Python. В CPython 2.5 конкатенация строк довольно быстрая, хотя это может не совпадать с другими реализациями Python. См. ConcatenationTestCode для обсуждения.
blockquote>
Существует центральный элемент и приписывает центральный XML в Вашем примере, первый является центральным элементом, вторым является центральный атрибут.
Большую часть времени, эти два шаблона эквивалентны, однако существуют некоторые исключения.
Атрибут, центральный
Элемент, центральный
Практичный
, Если Вы действительно заботитесь о размере XML, используйте атрибут каждый раз, когда Вы можете, если это является соответствующим, Оставляют nullable, составной тип и узел, который собирающийся содержать значение крупного текста как элементы, Если Вы не заботитесь о размере XML или у Вас есть сжатие, включают во время транспортировки, палки с элементами. Это более расширяемо.
Фон
В ТОЧЕЧНОЙ СЕТИ, XmlSerializer может сериализировать свойства объектов или в атрибуты или в элементы. В недавно платформе WCF, сериализатор DataContract может только сериализировать свойства в элементы, и это быстрее, чем XmlSerializer, причина очевидна, это просто должно искать пользовательские данные из элементов при десериализации.
Здесь статья объясняет его также Элемент по сравнению с атрибутом
Можно также хотеть видеть ответы на этот вопрос, который я поставил некоторое время назад. Я нашел ответы полезными.
В моей компании мы одобрили бы 2-й подход.
способ, которым мы думаем об этом, состоит в том, что "firstname" и "lastname" атрибуты из узла "человека", а не подполя из узла "человека". Это - тонкое различие.
, По-моему, 2-й подход более краток, и удобочитаемость/пригодность для обслуживания значительно улучшена, который очень важен.
, Конечно, это зависело бы от Вашего приложения. Я не думаю, что существует всеохватывающая норма, которая покрывает все сценарии.
Когда-то в будущем, когда Вы добавите <address>
свойство, Вы не захотите делать его атрибутом XML. Это вызвано тем, что <address>
мог бы быть более сложный элемент, составленный из конкретного адреса, города, страны, и т.д.
поэтому можно хотеть выбрать первую форму подэлемента, если Вы не действительно уверены, что атрибут не должен будет идти намного глубже. Первая форма допускает большую расширяемость в будущем.
, Если Вы вообще обеспокоены пространством, сожмите свой XML.
Атрибуты не являются чувствительным порядком. Это может быть преимуществом или недостатком в зависимости от Вашей ситуации.
Атрибуты не могут быть дублированы. Если у "Joe" есть два имени, то узлы являются единственным способом пойти.