将XML解析为通用列表(同一节点中的XML元素)
本文关键字:XML 节点 元素 列表 | 更新日期: 2023-09-27 18:06:34
我想将XMl字符串转换为通用列表。
My XML code:
<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>
Start with 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文件做更多的研究。
我将使用XmlSerializer
,因为您已经有了一个想要使用的定义良好的类。您只需要封装List部分,以便序列化器知道如何处理<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必须更正-属性值必须在引号中。