2

ディレクトリから小さなxmlファイルを取得してオブジェクトにするクラスを作成しようとしていますが、属性に常に問題があります。のように呼び出すことができるように、クラスに次元のリストを持たせたいです。Dimension [x] .id、Dimension [x].name....など。このクラスは何度も参照されますが、最初にオブジェクトにxmlを入力するだけにしたいです。

これがXMLです。Advancedでありがとうございます。

    <?xml version="1.0"?>
     <dimensions>
      <dimensions id="0" name="Test"  serverAddress = "cm.dt.funcom.com" port = "7509" />
      <dimensions id="1" name="Atlantean"  serverAddress = "cm.d1.funcom.com" port = "7501" />
      <dimensions id="2" name="Rimor"  serverAddress = "cm.d2.funcom.com" port = "7502" />
     </dimensions>
4

1 に答える 1

2

私は属性の不安を取り除くべき何かを試みます。

XMLで機能するXSDを生成(または既存のものを使用)します。このようなもの:

<?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>

.NETで使用可能なxsd.exeツールを使用して(Visual Studioコマンドプロンプトでパスが適切に設定されます)、クラスを生成します(上記の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;
        }
    }
}

次のステップは、この生成されたクラスを参照するコードを作成することです。あなたが見つけることができる多くの参照があります。紹介は、SOでこのようなものである可能性があります。

上記のXSD( "Russian Doll")オーサリングスタイルは、スマートに見えない可能性のあるクラスに名前を付けます。これを回避するための可能な方法があります。

于 2013-02-22T01:06:52.130 に答える