您好我正在阅读下面的XML文档
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSYMBOL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SYMBOL Code="AA.P" Name="Alcoa Inc Pf 3.75" />
<SYMBOL Code="AADR" Name="Wcm Bny Focused Growth Adr ETF" />
<SYMBOL Code="AAU" Name="Almaden Minerals" />
<SYMBOL Code="AAVX" Name="Etracs Daily Short 1 Month S&P" />
</ArrayOfSYMBOL>
如何将数据放入带有SYMBOL Then Name的2D字符串数组中。
答案 0 :(得分:6)
如何使用更像Symbol
类列表的结构:
class Symbol
{
public string Code { get; set; }
public string Name { get; set; }
}
XDocument doc = XDocument.Load("test.xml");
var symbols = doc.Descendants("SYMBOL")
.Select(x => new Symbol
{
Code = (string)x.Attribute("Code"),
Name = (string)x.Attribute("Name")
})
.ToList();
这种方法的优点是,您可以以更易于阅读和理解的方式访问单个符号 - 而不是访问容易出错的数组中的索引,您可以使用强类型的适当命名属性类,即写出你找到的所有符号可能是:
foreach (var symbol in symbols)
{
Console.WriteLine("Symbol: {0} = {1}", symbol.Code, symbol.Name);
}
如果你只想找到一种方法来查找符号的名称,你也可以使用ToDictionary()
:
var symbolMap = doc.Descendants("SYMBOL")
.ToDictionary( x=> (string)x.Attribute("Code"),
x=> (string)x.Attribute("Name"));
Console.WriteLine("Name for symbol {0} is {1}", "AA.P", symbolMap["AA.P"]);
答案 1 :(得分:0)
public class SYMBOL
{
[XmlAttribute("Code")]
public string Code { get; set; }
[XmlAttribute("Name")]
public string Name { get; set; }
}
XmlSerializer xml = new XmlSerializer(typeof(SYMBOL[]));
SYMBOL[] symbols = (SYMBOL[])xml.Deserialize(aFileStream);