我有一个如下所示的Xml文件:
<Head>
<Node Name="something" value="10"/>
<Node Name="somethingElse" value="3"/>
</head>
<Head>
<Node Name="something" value="10"/>
<Node Name="somethingElse" value="3"/>
</head>
我想要的是能够创建和包含两个具有名称和密钥的对象的对象。
这是我到目前为止所做的:
public void XmlReaderMethod(string Path)
{
SomeObject object = new Object();
using (XmlTextReader xReader = new XmlTextReader(Path))
{
while (xReader.Read())
{
if (xReader.NodeType == XmlNodeType.Attribute)
{
if (xReader.Name == "Name")
{
object = new object(xReader.Name);
}
else if (xReader.Name == "Value")
{
object.Key = xReader.Name;
}
}
//For Every two objects
//OtherObject otherObject = new OtherObject(object1, object2);
}
}
}
但我想要它做的是使用名称和值创建每两个SomeObject来创建一个包含两个someObject的OtherObject。
答案 0 :(得分:0)
如果我正确理解您的问题,您真正想要做的是为OtherObject
元素的每个实例创建一个Head
,子对象代表子Node
元素。
这样的事情应该有效:
XmlDocument oXml = new XmlDocument();
oXml.Load(Path);
//Get a list of Head nodes. For each one of these, create an `OtherObject`
XmlNodeList headNodes = oXml.SelectNodes("//Head");
foreach(XmlNode headNode in headNodes)
{
//Get a list of the child 'Node' nodes
XmlNodeList childNodes = headNode.SelectNodes("./Node");
if(childNodes.Count == 2)
{
Object firstObject = new Object() {
Name = childNodes[0].Attributes["Name"].Value,
Key = childNodes[0].Attributes["Key"].Value
};
Object secondObject = new Object() {
Name = childNodes[1].Attributes["Name"].Value,
Key = childNodes[1].Attributes["Key"].Value
};
OtherObject oOther = new OtherObject(firstObject, secondObject);
}
}
答案 1 :(得分:0)
您可能希望使用Linq-To-Xml代替