2013-07-03 5 views
2

У меня есть String, содержащий текст XML-файла. Строка была сформирована из входного потока, но я не думаю, что это актуально.Чтение первой строки 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> 

Я тогда преобразовать String к StringReader

StringReader strReader = new StringReader(iString); 

И StringReader Ань XmlTextReader

XmlTextReader reader = new XmlTextReader(strReader); 

Прежде чем даже продолжить мой код, я хочу проверить, что первый узел XML равен <DiagReport>. Есть ли способ, которым я могу это сделать, используя функции-члены от XmlTextReader?

+1

FYI, вы не должны использовать 'новый XmlTextReader()' или 'новый XmlTextWriter()'. Они устарели с .NET 2.0. Вместо этого используйте 'XmlReader.Create()' или 'XmlWriter.Create()'. –

+0

Спасибо! Это действительно помогло с некоторыми другими проблемами. –

ответ

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") 
{ 
} 
+0

Спасибо! Мне нравится эта идея. Я просто выбрал другой, потому что он более компактный. –

+0

@Adam_G Нет проблем. Я также поддержал этот ответ по той же причине :) – keyboardP

0

Просто начните читать с читателя. Это должно быть одно из первых, что вы читаете, чтобы вы могли проверить это. В противном случае просто сопоставьте регулярное выражение с строкой перед созданием читателя. Однако читатель не такой тяжелый, как синтаксический анализатор dom, он в значительной степени является оберткой вокруг сакса-парсера, поэтому он обрабатывает файл пошагово.

Смежные вопросы