阅读的IEnumerable 每个节点使用的XMLReader
问题描述:
我有IEnumerable<XElement> theTestCaseNodes
它具有以下一种XElements阅读的IEnumerable <XElement>每个节点使用的XMLReader
<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中的每个节点。
请帮助如何着手!
我明白我需要使用“使用”,但不知道如何继续。
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
属性
你可以写你的XML到一个字符串,创建一个'StringReader'并将它传递给'XmlReader'。注意你必须在'using'中'创建'一个阅读器,然后你可以调用像'ReadSubtree'这样的实例方法。 – juharr
_你为什么要使用XmlReader?这用于将文本转换为DOM,但您已经有DOM级别的元素。 –
@HenkHolterman,请让我知道更多关于此。我是XML的新手。我想在这里使用XMLReader,因为我想按顺序排列。有2种步骤,“type = Action”和“type = check”,我想按顺序阅读它们。 – Diana