使用 XMlReader 读取 IEnumerable<XElement> 中的每个节点
Read each node in IEnumerable<XElement> using XMlReader
我有 IEnumerable<XElement> theTestCaseNodes
具有以下类型的 XElements
<testcase>
<Main>
<test_step type ="action">
<Name>Goto</Name>
<description>xxxxxxxxx</description>
</test_step>
<test_step type ="check">
<Name>Click</Name>
<description>xxxxxxxxx</description>
</test_step>
</Main>
</testcase>
<testcase>
<Main>
<test_step type ="action">
<Name>Goto</Name>
<description>xxxxxxxxx</description>
</test_step>
<test_step type ="check">
<Name>Type</Name>
<description>xxxxxxxxx</description>
</test_step>
</Main>
</testcase>
基本上这是我的测试用例,我想按顺序执行它们。
所以,现在我想使用 XMLReader 读取 IEnumerable 中的每个节点。
请帮助如何进行!!
我知道我需要使用 "using" 但不确定如何继续。
public void ExecuteTestcase(IEnumerable<XElement> theTestCaseNodes)
{
using (XmlReader aNodeReader = XmlReader.ReadSubtree()) {
}
}
使用 XElement.CreateReader
为元素实例化 XmlReader
。
public void ExecuteTestcase(IEnumerable<XElement> theTestCaseNodes)
{
foreach(var node in theTestCaseNodes)
{
using (var reader = node.CreateReader())
{
// use XmlReader for testing
}
}
}
如果 XmlReader
的主要目的是以正确的顺序读取元素,那么循环遍历元素将按照它们在 xml
中出现的相同顺序执行它们
foreach(var testStep in theTestCaseNodes.Elements("test_step"))
{
// execute step
}
如果您不想依赖 xml 的顺序,那么您可以通过 type
属性
访问正确的步骤
foreach(var testStep in theTestCaseNodes.Elements("Main"))
{
var action = testStep.Elements("test_step")
.First(step => step.Attribute("type") == "action");
var check = testStep.Elements("test_step")
.First(step => step.Attribute("type") == "action");
// execute action
// execute check
}
我有 IEnumerable<XElement> theTestCaseNodes
具有以下类型的 XElements
<testcase>
<Main>
<test_step type ="action">
<Name>Goto</Name>
<description>xxxxxxxxx</description>
</test_step>
<test_step type ="check">
<Name>Click</Name>
<description>xxxxxxxxx</description>
</test_step>
</Main>
</testcase>
<testcase>
<Main>
<test_step type ="action">
<Name>Goto</Name>
<description>xxxxxxxxx</description>
</test_step>
<test_step type ="check">
<Name>Type</Name>
<description>xxxxxxxxx</description>
</test_step>
</Main>
</testcase>
基本上这是我的测试用例,我想按顺序执行它们。 所以,现在我想使用 XMLReader 读取 IEnumerable 中的每个节点。
请帮助如何进行!!
我知道我需要使用 "using" 但不确定如何继续。
public void ExecuteTestcase(IEnumerable<XElement> theTestCaseNodes)
{
using (XmlReader aNodeReader = XmlReader.ReadSubtree()) {
}
}
使用 XElement.CreateReader
为元素实例化 XmlReader
。
public void ExecuteTestcase(IEnumerable<XElement> theTestCaseNodes)
{
foreach(var node in theTestCaseNodes)
{
using (var reader = node.CreateReader())
{
// use XmlReader for testing
}
}
}
如果 XmlReader
的主要目的是以正确的顺序读取元素,那么循环遍历元素将按照它们在 xml
foreach(var testStep in theTestCaseNodes.Elements("test_step"))
{
// execute step
}
如果您不想依赖 xml 的顺序,那么您可以通过 type
属性
foreach(var testStep in theTestCaseNodes.Elements("Main"))
{
var action = testStep.Elements("test_step")
.First(step => step.Attribute("type") == "action");
var check = testStep.Elements("test_step")
.First(step => step.Attribute("type") == "action");
// execute action
// execute check
}