【发布时间】:2014-04-13 16:48:08
【问题描述】:
<Entity>
<Fields>
- <Field Name="expected">
<Value>011919884841926</Value>
</Field>
- <Field Name="name">
<Value>Dial</Value>
</Fields>
<Fields>.....</Fields>
<Fields>.....</Fields>
<Fields>.....</Fields>
<Fields>......</Fields>
<Fields>....</Fields>
</Entity>
如何在 c# 中获取 Dial = 011919884841926 作为键值对。
List<Dictionary<string, string>> tempDefect = new List<Dictionary<string, string>>();
if (!string.IsNullOrEmpty(responseXML))
{
XmlDocument configXml = new XmlDocument();
configXml.LoadXml(responseXML);
XPathNavigator navigator = configXml.CreateNavigator();
XPathNodeIterator nodeIterator = (XPathNodeIterator)navigator.Evaluate(rootEntities + "/" + rootEntity + "/" + rootElement);
for (int i = 0; i < nodeIterator.Count; i++)
{
nodeIterator.MoveNext();
Dictionary<string, string> tempDefectRows = new Dictionary<string, string>();
configXml = new XmlDocument();
configXml.LoadXml(nodeIterator.Current.OuterXml.ToString());
navigator = configXml.CreateNavigator();
XPathNodeIterator nodeIterator1 = (XPathNodeIterator)navigator.Evaluate(rootElement + "/" + loginParamsElement);
if (nodeIterator.Count != 0)
{
for (int j = 0; j < nodeIterator1.Count; j++)
{
nodeIterator1.MoveNext();
XmlNode node = ((IHasXmlNode)nodeIterator1.Current).GetNode();
if (attributes.Contains((T)Enum.Parse(typeof(T), node.Attributes["Name"].Value.ToString().Replace("-", "_"), true)))
{
if (node.HasChildNodes)
{
configXml.LoadXml(node.InnerXml.ToString());
XPathNavigator navigator2 = configXml.CreateNavigator();
XPathNodeIterator nodeIterator2 = (XPathNodeIterator)navigator2.Evaluate("Value");
if (nodeIterator2.Current.ToString().Trim() != StripTagsCharArray(nodeIterator2.Current.ToString().Replace(" ", "").Trim()).Trim())
{
tempDefectRows.Add(node.Attributes["Name"].Value.ToString(), StripTagsCharArray(nodeIterator2.Current.ToString().Replace(" ", "").Trim()).Trim());
}
else
{
tempDefectRows.Add(node.Attributes["Name"].Value.ToString(), nodeIterator2.Current.ToString().Trim());
}
}
else
{
tempDefectRows.Add(node.Attributes["Name"].Value.ToString(), string.Empty);
}
}
}
if (tempDefectRows.ContainsValue(filterBy))
{
testID = tempDefectRows["id"].ToString();
tempDefect.Add(tempDefectRows);
if (typeof(T).Name.ToString() == "Test")
break;
}
}
}
}
这是我的研究和工作。但是我在 2 到 3 个循环后得到了想要的输出……这就是我在这里发布的原因…… 有什么简单的方法可以解决。
【问题讨论】:
标签: c# xml xml-parsing linq-to-xml xmlreader