我想将XMl字符串转换为通用列表。
我的XML代码:
<Color>
<t_options optionImage="1593-Black.png" optionid="4625050" RowId=1 />
<t_options optionImage="1593-Red.png" optionid="4625051" RowId=2 />
<t_options optionImage="1593-Blue.png" optionid="4625052" RowId=3 />
<t_options optionImage="1593-Green.png" optionid="4625053" RowId=4 />
</Color>
答案 0 :(得分:1)
从System.Xml.Linq开始;您需要加载xml文件,然后解析文档。例如,
var doc = XDocument.Load("file.xml");
IEnumerable<XElement> elements = doc.Descendants(tagNameHere);
如果你想创建一个列表,你可以通过这样的方式访问这些元素:
List<string> myElements = new List<string>();
XElement element = elements.ElementAt(0);
myElements.Add(element.Value);
这只是为了让你入门。我建议你在这里阅读:
https://msdn.microsoft.com/en-us/library/system.xml.linq(v=vs.110).aspx
并对解析xml文件进行更多研究。
答案 1 :(得分:0)
我会使用XmlSerializer
,因为你已经有一个你想要使用的定义良好的类。您只需要封装List部分,以便Serializer知道如何处理<Color>
标记:
public class t_option
{
[XmlAttribute]
public string optionImage { get; set; }
[XmlAttribute]
public string optionid { get; set; }
[XmlAttribute]
public string RowId { get; set; }
}
public class Color
{
public Color()
{
t_options = new List<t_option>();
}
[XmlElement("t_options")]
public List<t_option> t_options {get; set;}
}
public static void Main(string[] args)
{
string xml = @"<Color>
<t_options optionImage='1593-Black.png' optionid='4625050' RowId='1' />
<t_options optionImage='1593-Red.png' optionid='4625051' RowId='2' />
<t_options optionImage='1593-Blue.png' optionid='4625052' RowId='3' />
<t_options optionImage='1593-Green.png' optionid='4625053' RowId='4' />
</Color>";
XmlSerializer xser = new XmlSerializer(typeof(Color));
using (XmlReader xr = XmlReader.Create(new StringReader(xml)))
{
xr.MoveToContent();
Color c = (Color)xser.Deserialize(xr);
Console.WriteLine(c.t_options.Count);
}
// Console.WriteLine(l.Count);
Console.ReadKey();
}
请注意,您的XML必须更正 - 属性值必须在引号中。