Whitin a“units”元素可以是许多“unit”元素,它们同样具有“units”元素。
我想将每个单元的unitName写入一个自定义类,其中prop的UnitName和前一个/父单元的unitName进入propUnitName。
我也不确定递归方法应该返回什么类型的数据...最好是具有平面列表的List。
你会怎么做?
<units>
<unit>
<unitName>Test05</unitName>
<units>
<unit>
<unitName>Test03</unitName>
<units>
<unit>
<unitName>Test04</unitName>
<units>
<unit>
<unitName>Test07</unitName>
<units>
<unit>
<unitName>Test01</unitName>
</unit>
</units>
</unit>
</units>
</unit>
</units>
</unit>
</units>
</unit>
</units>
答案 0 :(得分:1)
我更希望以这种方式写课:
[Serializable]
[XmlRoot("unit")]
public class Unit
{
[XmlArray("units")]
[XmlArrayItem("unit")]
public Unit[] Units { get; set; }
[XmlElement("unitName")]
public string Name { get; set; }
}
然后使用XmlSerializer对其进行序列化/反序列化。
答案 1 :(得分:0)
它有多种方法可以帮助您轻松解析Xml。在你的情况下,它看起来像:
var xdoc = new XDocument(xmlString);
foreach(XElement node in xdoc.Descendants("unitName"))
{
AddToList(node.value);
}
这将遍历xml文档中的所有unitName
元素,您可以随意使用它们。
编辑:将xdoc.Descendants更改为xdoc.Elements,因此它现在以递归方式工作并产生预期结果。