Терминология XML:
В XML у вас есть элементы и атрибуты . В вашем примере ZipOrigination
является элементом - он содержит открывающий и закрывающий тег. USERID
является атрибутом - он появляется в открывающем теге элемента и имеет имя и значение (в кавычках).
.NET Framework классы
Для вашей конкретной проблемы вы можете использовать XDocument
(http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx) или XmlDocument
(http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx). XDocument
- более новое дополнение к .NET framework), и для многих задач это предпочтительный выбор. См. эту ветку, например: http://social.msdn.microsoft.com/forums/en-US/xmlandnetfx/thread/4895ba4d-0425-4d10-9bae-5c33e8385357.
Пользовательские классы
Похоже, вы захотите написать класс RateV3Request
, который содержит свойства UserId
и Package
. Похоже, что другой класс ShipDate
со свойством Option
может быть полезен. Затем, наконец, вы можете написать класс Package
, который содержит все остальные свойства (Id, Service, FirstClassMailType, ..., ShipDate). Каждое свойство должно иметь соответствующий тип данных.
Собираем все вместе
Вы можете либо добавить GetXml()
метод для каждого из ваших пользовательских классов, либо написать отдельный класс (например, RateV3RequestGateway
), который обрабатывает все преобразования между вашими классами и XML. Я предпочитаю специализированный класс, потому что он обеспечивает большую гибкость. Если позже вы захотите использовать базу данных или JSON вместо XML, вы можете написать другой шлюз, но вам не придется трогать ваши пользовательские классы.