Я хотел бы попробовать что-то, что должно отнять тревогу атрибута.
Создайте (или используйте существующий) XSD, который будет работать для ваших XML. Что-то такое, как это:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="dimensions">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="dimensions">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:unsignedByte" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="serverAddress" type="xsd:string" use="required" />
<xsd:attribute name="port" type="xsd:unsignedShort" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Используя инструмент xsd.exe доступный с .NET (команда студии приглашение Визуальная будет установить путь хорошо для вас) генерировать классы (подразумевается, что выше XSD сохраняется как converting-xml-into-a-c-sharp-object.xsd
):
xsd /c <fullpath-if-not-in-the-current-folder>converting-xml-into-a-c-sharp-object.xsd
сгенерированный код будет что-то подобное (только заголовок):
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System.Xml.Serialization;
//
// This source code was auto-generated by xsd, Version=4.0.30319.1.
//
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class dimensions {
private dimensionsDimensions[] dimensions1Field;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("dimensions")]
public dimensionsDimensions[] dimensions1 {
get {
return this.dimensions1Field;
}
set {
this.dimensions1Field = value;
}
}
}
Следующим шагом является написание кода, который ссылается на этот сгенерированный класс; есть много ссылок, которые вы могли бы найти; введение может быть одним из таких, как this on SO.
Вышеупомянутый стиль авторского стиля XSD («Русская кукла») дает имена классам, которые могут не выглядеть умными; here - это возможный путь вокруг него.
Что вы пробовали? Где ты посмотрел? Что происходит, когда вы вводите «Преобразование XML в объект C#» в поле поиска StackOverflow? –
как я упоминал выше, у меня проблемы с атрибутами. Я могу deseriize это легко, если это не было для атрибутов. В последнее время я слишком привык к json –
См. Это сообщение относительно «Как правильно реализовать IXmlSerializable» http://stackoverflow.com/questions/5590592/help-with-implementing-ixmlserializable-on-this-xml –