2

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

该字符串似乎没问题,如:

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>

然后我将其转换StringStringReader

StringReader strReader = new StringReader(iString);

并且StringReader到一个XmlTextReader

XmlTextReader reader = new XmlTextReader(strReader);

不过,在继续编写代码之前,我想检查 XML 的第一个节点是否为<DiagReport>. 有没有办法使用 的成员函数来做到这一点XmlTextReader

4

3 回答 3

3

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

if (reader.MoveToContent() == XmlNodeType.Element && reader.Name == "DiagReport")
{
// Good to go
}
于 2013-07-03T23:58:00.180 回答
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")
{  
}
于 2013-07-03T23:55:48.493 回答
0

只需从读者那里开始阅读。它应该是您首先阅读的内容之一,以便您可以检查。否则,只需在创建阅读器之前将正则表达式与字符串匹配即可。然而,阅读器不像 dom 解析器那样重量级,它几乎是 sax 解析器的包装器,因此它以增量方式处理文件。

于 2013-07-03T23:57:19.943 回答