我有一个包含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);
StringReader
到XmlTextReader
XmlTextReader reader = new XmlTextReader(strReader);
在进行我的代码之前,我想检查XML的第一个节点是<DiagReport>
。有没有办法使用XmlTextReader
答案 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解析器的包装器,因此它会逐步处理文件。