Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Xml文件读取并添加到字符串列表_C#_Xml_List_Xmlreader_Xmlnode - Fatal编程技术网

C# 从Xml文件读取并添加到字符串列表

C# 从Xml文件读取并添加到字符串列表,c#,xml,list,xmlreader,xmlnode,C#,Xml,List,Xmlreader,Xmlnode,试图从我电脑上的XML文件中读取。该函数使用字符串值传递静态函数。我想在每个事务中创建一个所谓的“节点”。我想说数组的数组,因为我来自C++/Java背景。每一张单子上都有一张单子。交易列表,在everyone交易中,我有与该交易对应的股票代码值、动作值、日期值和股票值。这就是我目前所拥有的 XML文件 <stocks> <transaction> <ticker>GOOG</ticker> <action>buy</action

试图从我电脑上的XML文件中读取。该函数使用字符串值传递静态函数。我想在每个事务中创建一个所谓的“节点”。我想说数组的数组,因为我来自C++/Java背景。每一张单子上都有一张单子。交易列表,在everyone交易中,我有与该交易对应的股票代码值、动作值、日期值和股票值。这就是我目前所拥有的

XML文件

<stocks>
<transaction>
<ticker>GOOG</ticker>
<action>buy</action>
<date>20071116</date>
<shares>44</shares>
</transaction>
<transaction>
<ticker>IBMX</ticker>
<action>buy</action>
<date>20080104</date>
<shares>350</shares>
</transaction>

谷歌
购买
20071116
44
IBMX
购买
20080104
350
C#代码

publicstaticvoidreadxml(字符串文件名)
{
XmlTextReader=新的XmlTextReader(文件名);
List transList=新列表();
XmlNode节点=
foreach(读取器()中的var事务)
{
添加(新事务(node.get ticker、node.action、node.date、node.shares)
}
公共类事务
{
公共字符串标记器{get;set;}
公共字符串操作{get;set;}
公共字符串日期{get;set;}
公共整数NumShares{get;set;}
}
私有列表getTransactionsFromFile(字符串文件名)
{
XmlDocument xDoc=新的XmlDocument();
加载(文件名);
List tranList=新列表();
foreach(xDoc中的xmlnodex)
{
如果(x.Name==“股票”)
{
foreach(x.ChildNodes中的XmlNode y)
{
如果(y.Name==“交易”)
{
Transaction=new Transaction();
foreach(y.ChildNodes中的XmlNode z)
{
如果(z.Name==“股票代码”)
{
testran.Ticker=z.InnerText;
}
如果(z.Name==“动作”)
{
testran.Action=z.InnerText;
}
如果(z.Name==“日期”)
{
testran.Date=z.InnerText;
}
如果(z.Name==“股份”)
{
testran.NumShares=int.Parse(z.InnerText);
}
如果(z.Name==“passOutputChildSteps”)
}
//将构造的事务对象添加到事务列表。。。
tranList.Add(testran);
}
}
}
}
返回列表;
}

您使用XMLDocument而不是XDocument的原因是什么?我实际上不知道XDocument,但我将来可能会尝试使用它。我之所以使用XMLDocument,是因为我有现成的示例代码。
public static  void readXML(string filename)
    {
        XmlTextReader reader = new XmlTextReader(filename);
        List<List<string>> transList = new List<List<string>>();
        XmlNode node = 

        foreach(var transaction in reader())
        {
            transList.Add(new Transaction(node.get ticker,node.action,node.date,node.shares)

        }
    public class Transaction
    {
        public string Ticker {get; set;}
        public string Action {get; set;}
        public string Date {get; set;}
        public int NumShares {get; set;}
    }

    private List<Transaction> getTransactionsFromFile(string filename)
    {
        XmlDocument xDoc = new XmlDocument();
        xDoc.Load(filename);
        List<Transaction> tranList = new List<Transaction>();

        foreach (XmlNode x in xDoc)
        {
            if (x.Name == "stocks")
            {
                foreach (XmlNode y in x.ChildNodes)
                {
                    if (y.Name == "transaction")
                    {
                        Transaction tempTran = new Transaction();
                        foreach (XmlNode z in y.ChildNodes)
                        {
                            if (z.Name == "ticker")
                            {
                                tempTran.Ticker= z.InnerText;
                            }
                            if (z.Name == "action")
                            {
                                tempTran.Action= z.InnerText;
                            }
                            if (z.Name == "date")
                            {
                                tempTran.Date = z.InnerText;
                            }
                            if (z.Name == "shares")
                            {
                                tempTran.NumShares = int.Parse(z.InnerText);
                            }

                            if (z.Name == "PassOutputToChildSteps")
                        }
                        //add the constructed Transaction Object to the Transaction List...
                        tranList.Add(tempTran);
                    }
                }
            }
        }
        return tranList;
    }