使用以下代码,我正在阅读每个<ns>CounterSales</ns>
的{{1}}(第3个元素),这很棒。我包含了代码和XML。
这是代码,如果<nv>
是硬编码的话,效果很好:
ElementAt
以下是var xDoc = XDocument.Parse(xmlStr);
var nvs = xDoc.Descendants("nv");
var nads = nvs.Select(nv => nv.Elements("nad").First().Value).ToList();
var thirdRs = nvs.Select(nv => nv.Elements("r").ElementAt(2).Value).ToList();
的价值:
xmlStr
但是,我想说我想阅读多个计数器。我有一个数据表,目前有两行:<ni>
<nss>20150927</nss>
<gp>Addon</gp>
<ns>CounterBlah1</ns>
<ns>CounterBlah2</ns>
<ns>CounterSales</ns>
<ns>CounterBlah4</ns>
<ns>CounterBlah5</ns>
<ns>CounterBlah6</ns>
<nv>
<nad>Style=1,Rfu=1,Id=132</nad>
<r>0</r>
<r>15</r>
<r>8</r>
<r>3</r>
<r>2</r>
<r>2</r>
</nv>
<nv>
<nad>Style=1,Rfu=1,Id=433</nad>
<r>0</r>
<r>15</r>
<r>30</r>
<r>3</r>
<r>2</r>
<r>2</r>
</nv>
<nv>
<nad>Style=1,Rfu=1,Id=665</nad>
<r>0</r>
<r>15</r>
<r>90</r>
<r>3</r>
<r>2</r>
<r>2</r>
</nv>
</ni>
&amp; [CounterSales]
。我想以同样的方式处理其他两个计数器:
[CounterBlah5]
感谢任何帮助。
感谢。
答案 0 :(得分:0)
如果我理解你的问题,这就是你需要的
- (BOOL)validateUrl: (NSURL *)candidate
{
NSURLRequest *req = [NSURLRequest requestWithURL:candidate];
return [NSURLConnection canHandleRequest:req];
}
修改:从this帖子中查找DataTable results = GetCounters();
//results has two rows: [CounterSales] & [CounterBlah5]
foreach (DataRow row in results.Rows)
{
string counter = cellRow["counter"]; //counter equals "CounterSales"
/* Iterate through all <ns> to see where "CounterSales" is located.
In this case, index = 2. On next foreach, index equals 4 */
var xDoc = XDocument.Parse(xmlStr);
//here we find the index
var requiredIndex = xDoc.Descendants("ns")
.Select((node, idx) => new { node, idx})
.First(x => x.node.Value.Equals(counter)).idx;
var nvs = xDoc.Descendants("nv");
var nads = nvs.Select(nv => nv.Elements("nad").First().Value).ToList();
var thirdRs = nvs.Select(nv => nv.Elements("r").ElementAt(requiredIndex).Value).ToList();
}
索引的较短语法。
List<T>