阅读第一行XML

时间:2013-07-03 23:51:19

标签: c# asp.net xml

我有一个包含XML文件文本的String。字符串是由输入流形成的,但我不认为这是相关的。

字符串似乎没问题,如:

System.Diagnostics.Debug.WriteLine("iString = " + iString);

输出:

iString = <?xml version="1.0"?>
<DiagReport>
<LicensingData>
  <ToolVersion>6.3.94</ToolVersion>
  <LicensingStatus>SL_LICENSING_STATUS_NOTIFICATION</LicensingStatus>
</LicensingData>
</DiagReport>

然后我将String转换为StringReader

StringReader strReader = new StringReader(iString);

StringReaderXmlTextReader

XmlTextReader reader = new XmlTextReader(strReader);

在进行我的代码之前,我想检查XML的第一个节点是<DiagReport>。有没有办法使用XmlTextReader

的成员函数来做到这一点

3 个答案:

答案 0 :(得分:3)

来自http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.movetocontent.aspx

if (reader.MoveToContent() == XmlNodeType.Element && reader.Name == "DiagReport")
{
// Good to go
}

答案 1 :(得分:2)

你可以循环直到你得到第一个元素(它是根)。

private string root = "";
while (reader.Read())
{
   //check if it's an element
   if (reader.NodeType == XmlNodeType.Element)
   {
       //get the element name
       root = reader.Name;   

       //break out of this while loop as we only want the first element 
       break;
   }
}

if(root == "DiagReport")
{  
}

答案 2 :(得分:0)

刚开始阅读读者。它应该是您阅读的第一件事,以便您可以查看。否则只需在创建阅读器之前将正则表达式与字符串匹配。然而,读者并不像dom解析器那样重量级,它几乎是sax解析器的包装器,因此它会逐步处理文件。