1

このように見えるはずのxmlファイルを作成する必要があります。

<Event id="Date - Event Name - Event Type">      
    <DogNumber id="dog id number">           
        <dogName id-"dog id number">dog name</dogName>               
        <dogBreed>dog breed</dogBreed>      
    </DogNumber>
</Event>

次に、要素の値と属性が異なる場合を除いて、別のイベントに対して再度繰り返されます。

<Event id="Date - Event Name - Event Type">      
    <DogNumber id="dog id number">           
        <dogName id-"dog id number">dog name</dogName>               
        <dogBreed>dog breed</dogBreed>      
    </DogNumber>
</Event>

C#を使用してXMLファイルを作成するのは初めてですが、要素に属性を適切に追加し、上記と同じように親ノードと子ノードを取得するのに問題があります。C#アプリケーションからこのファイルを調べて、特定のイベントに基づいて上記のすべての値を読み取り、次に各イベントの特定の犬を読み取ることができる必要があります。どのイベントとどの犬を選択するかの基準は、おそらくComboBoxへのユーザー入力に基づいています。私の計画はこのgetElementById方法を使うことでした。しかし、私はこれを行うための非常に多くの異なる方法を見てきましたので、これを行うための最良かつ最も効率的な方法を決定するのに苦労しています。

4

5 に答える 5

4

そのxmlファイルを読み書きする最も簡単な方法はXMLSerializerを使用することだと思います。このアプローチにより、データに簡単にバインドすることもできます(UIにWPFを使用している場合)

シリアル化可能なクラスを作成します。

    public class Event
    {
        [XmlAttribute]
        public string id { get; set; }

        [XmlElement]
        public DogNumber DogNumber { get; set; }
    }

    public class DogNumber
    {
        [XmlAttribute]
        public string id { get; set; }

        [XmlElement]
        public dogName dogName { get; set; }

        [XmlElement]
        public string dogBreed { get; set; }
    }

    public class dogName
    {
        [XmlAttribute]
        public string id { get; set; }

        [XmlTextAttribute]
        public string value { get; set;  }
    }

次に、XmlSerializerを使用して逆シリアル化します(ファイルを使用した例)。

        Stream input = File.OpenRead("C:\\test.xml");
        XmlSerializer serialier = new XmlSerializer(typeof(Event));
        Event newevent = serialier.Deserialize(input) as Event;
        input.Close();
于 2012-08-03T13:47:40.710 に答える
2

LINQtoXMLを確認してください。

これが非常に簡単な概要です

msdn

于 2012-08-03T13:44:56.093 に答える
0

XMLを作成または読み取るためのC#では、XDocumentクラスを使用します(このmsdn Webサイトの最後に使用例があります)

XDocument yourXml = null;

処理後(ノードの追加など)、必要に応じて、xmlをfile.xmlに保存します。

// verify if file not existing
if (!System.IO.File.Exists(@"yourName.xml"))
{
    // if file not exist, create xml file.
    FileStream fs = File.Create(@"yourName.xml");
    fs.Close();
}

// save your xml in xml file
yourXml.Save(@"yourName.xml");
于 2012-08-03T13:43:21.163 に答える
0

XMLに関しては、クラスを使用してシリアル化/逆シリアル化することが、自分のニーズに最適な方法を見つけています。

たとえば、次のコードを考えてみましょう。

/// <summary>
/// Details on the destination of the shipment.
/// </summary>
[XmlRoot("destination")]
public class Destination
{
    List<Recipient> recipient { get; set; }
}

/// <summary>
/// Recipient details.
/// </summary>
[XmlRoot("recipient")]
public class Recipient
{

    /// <summary>
    /// Client Id of the recipient; only used if selected as the sort criterion.
    /// </summary>
    /// <remarks>Truncated after 30 characters.</remarks>        
    [XmlElement("client-id")]
    public string ClientID { get; set; } 

    /// <summary>
    /// Name of the individual receiving the shipment.
    /// </summary>
    /// <remarks>Truncated after 44 characters.</remarks>
    [XmlElement("contact-name")]
    public string ContactName { get; set; } 

    /// <summary>
    /// Name of the company.
    /// </summary>
    /// <remarks>Truncated after 44 characters.</remarks>
    [XmlElement("company")]
    public string Company { get; set; }

    ...

これにより、オブジェクトを次のようなXMLにシリアル化できます。

<destination>
     <recipient>
         <client-id></client-id>
         <contact-name></contact-name>
         <company></company>
         ...

XmlRootまたはXmlElement修飾子を使用して、XMLの作成方法を制御できます。あなたの場合、を使用し[XmlAttribute("attributeName")]て属性を指定できます。

さまざまなXML修飾子の詳細については、http://msdn.microsoft.com/en-us/library/e123c76wを参照してください。

于 2012-08-03T13:40:25.477 に答える
0

次のようなXDocumentの使用を試すことができます。

XDocument doc = new XDocument(new XElement("Event", new XAttribute("Id", youEventString),
    new XElement("DogNumber", new XAttribute("id", dogId),
    new XElement("dogName", new XAttribute("id", dogNumber), dogNname),
    new XElement("dogBreed", dogBreed)  
    )));
doc.Save(filename);

youEventString、dogId、dogNumber、dogName、dogBreedを適切な文字列に置き換えることができます。また、ファイルを保存するファイル名を指定します。

幸運を

于 2012-08-03T13:44:37.360 に答える