-7

ノードと子ノードからデータを取得し、文字列またはデータテーブルに格納したいと考えています。xml ファイルから値を取得するコードを提供してください。

XML ファイル

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE VirtualSport SYSTEM "VirtualSport.dtd">
<VirtualSport sport="Dog" type="Result" generated="20080531T110552+0100">
    <Competition venue="Warcester Green" date="20080531" status="Active" revision="1">
        <Event time="1105+0100" status="Result" number="1" noOfCompetitors="6" revision="7" offtime="110508+0100" wintime="000029.00">
            <Competitor number="6" name="Time At the Bar" finishPosition="1">
                <Odds numerator="6" denominator="1"/>
            </Competitor>
            <Competitor number="1" name="Pantomime Dame" finishPosition="2">
                <Odds numerator="9" denominator="2"/>
            </Competitor>
            <Competitor number="2" name="Scrapper" finishPosition="3">
                <Odds numerator="3" denominator="1" status="2Fav"/>
            </Competitor>
            <Returns type="Forecast" dividend="39.50"/>
            <Returns type="TriCast" dividend="122.83"/>
        </Event>
    </Competition>
</VirtualSport>

私はこのような出力が欲しい

number= 6 
name= Time At the Bar
finishPosition= 1

最初にログ ファイルのデータを表示します。どんなアイデアでも助けてください。

4

3 に答える 3

1

Linq2Xml を使用したコードは次のとおりです。

var xml = @"<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!DOCTYPE VirtualSport SYSTEM 'VirtualSport.dtd'>
<VirtualSport sport='Dog' type='Result' generated='20080531T110552+0100'>
    <Competition venue='Warcester Green' date='20080531' status='Active' revision='1'>
        <Event time='1105+0100' status='Result' number='1' noOfCompetitors='6' revision='7' offtime='110508+0100' wintime='000029.00'>
            <Competitor number='6' name='Time At the Bar' finishPosition='1'>
                <Odds numerator='6' denominator='1'/>
            </Competitor>
            <Competitor number='1' name='Pantomime Dame' finishPosition='2'>
                <Odds numerator='9' denominator='2'/>
            </Competitor>
            <Competitor number='2' name='Scrapper' finishPosition='3'>
                <Odds numerator='3' denominator='1' status='2Fav'/>
            </Competitor>
            <Returns type='Forecast' dividend='39.50'/>
            <Returns type='TriCast' dividend='122.83'/>
        </Event>
    </Competition>
</VirtualSport>";

var doc = XDocument.Parse(xml);

var firstCompetitor = doc.Descendants().Where(d => d.Name == "Competition").Descendants().Descendants().First();
Console.WriteLine(firstCompetitor.Attribute("number").Value);
Console.WriteLine(firstCompetitor.Attribute("name").Value);
Console.WriteLine(firstCompetitor.Attribute("finishPosition").Value);
于 2013-09-05T06:50:09.050 に答える
0
{

 DataSet ds = new DataSet();

 //below line put xml path

 ds.ReadXml(@"E:\Personal\Profit and Loss by Class\Profit and Loss by Class\bin\Debug\TbPL.xml");

 DataTable dt = ds.Tables[0];

}
于 2013-09-05T06:39:55.337 に答える
0

グーグルについて聞いたことがありますか?「xmlファイルから読み取ったC#」

System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader("c:\\YourXmlFile.xml");
     string contents = "";
     while (reader.Read()) 
     {
        reader.MoveToContent();
        if (reader.NodeType == System.Xml.XmlNodeType.Element)
           contents += "<"+reader.Name + ">\n";
        if (reader.NodeType == System.Xml.XmlNodeType.Text)
           contents += reader.Value + "\n";
     }
 Console.Write(contents);
于 2013-09-05T06:40:44.043 に答える