Sae*_*ani 3 .net c# xml xpath xpathnodeiterator
我有一个像这样的XML文件:
<Document>
<Tests>
<Test>
<Name>A</Name>
<Value>0.01</Value>
<Result>Pass</Result>
</Test>
<Test>
<Name>A</Name>
<Value>0.02</Value>
<Result>Pass</Result>
</Test>
<Test>
<Name>B</Name>
<Value>1.01</Value>
<Result>Fail</Result>
</Test>
<Test>
<Name>B</Name>
<Value>0.01</Value>
<Result>Pass</Result>
</Test>
</Tests>
</Document>
Run Code Online (Sandbox Code Playgroud)
还有一个用于保存每个测试数据的类:
public class TestData
{
public string TestName {get; set;}
public int TestPositon {get; set;} //Position of Test node in XML file
public string TestValue {get; set;}
public string TestResult {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用此代码将所有Test放入 List<TestData>
doc = new XPathDocument(filePath);
nav = doc.CreateNavigator();
private List<TestData> GetAllTestData()
{
List<TestData> Datas = new List<TestData>();
TestData testData;
XPathNodeIterator it = nav.Select("/Document/Tests/Test/Name");
int pos = 1;
foreach(XPathNavigator val in it)
{
testData.TestPosition = pos;
testData = new TestData();
// This adds the Name, but what should I change to access Value and Result
// in the same nav ??
testData.TestName = val.Value;
Datas.Add(testData);
pos++; //Increment Position
}
return Datas;
}
Run Code Online (Sandbox Code Playgroud)
正如我在评论中所说的那样,XPath只是引用Name节点,我怎样才能在itterator的单个foreach中获得所有3个节点?我的意思是如何分配这些东西:
testData.Value = ???
testData.Result = ???
Run Code Online (Sandbox Code Playgroud)
谢谢!
使用XPath
/Document/Tests/Test
Run Code Online (Sandbox Code Playgroud)
它选择测试节点.然后在foreach使用中XPathNavigator.SelectSingleNode:
foreach (XPathNavigator val in it)
{
testData = new TestData();
testData.TestPosition = pos;
testData.TestName = val.SelectSingleNode(nav.Compile("Name")).Value;
testData.TestValue = val.SelectSingleNode(nav.Compile("Value")).Value;
Datas.Add(testData);
pos++;
}
Run Code Online (Sandbox Code Playgroud)
或者使用这个XPath:
/Document/Tests/Test/*
Run Code Online (Sandbox Code Playgroud)
它选择所有节点.
| 归档时间: |
|
| 查看次数: |
7853 次 |
| 最近记录: |