2014-10-24 2 views
0

У меня есть xml-файл, хотя он не в правильном формате. Я просто хочу получить значения, поскольку это моя главная цель. Также файл представляет собой одну строку. Файл выглядит примерно так.XmlReader синтаксический анализ одной строки xml

<Real64List>...numbers value....</Real64List> <Real64List>...numbers value...</Real64List><Uint32List>...numbers value..</Uint32List>. 

я смог сначала первую часть, но когда я пытаюсь разобрать вторую часть и третью часть я получаю ошибку «кратный корень в строке 1». Итак, как я могу разобрать вторую часть Real64List и Uint32List. Заранее спасибо!

Вот фрагмент кода, который я использую.

using (XmlReader reader = XmlReader.Create("generator_0000001.xml")) 
{ 
    List<float> vertex = new List<float>(); 
    List<Vector3> verticesList = new List<Vector3>(); 
    while (!reader.EOF) 
    { 
    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Real64List") 
    { 
     string xmlValue = reader.Value; 
     string[] coordinates = xmlValue.Split(','); 
     for (int i = 0; i < coordinates.Length; i++) 
     { 
     vertex.Add(float.Parse(coordinates[i])); 
     } 
     for (int i = 0; i < vertex.Count; i += 3) 
     { 
     var myVect = new Vector3(vertex[i], vertex[i + 1], vertex[i + 2]); 
     verticesList.Add(myVect); 
     } 
    } 
} 
+0

, если вы уже знаете структуру строки, возможно, ее исправление (путем добавления корневого узла), а затем разбор его обычно является самым простым способом. – kennyzx

+0

Это недопустимо xml. Действительный xml имеет один корневой узел – Jonesopolis

+0

Я знаю, что это недействительный XML, но это файл, который мне дал, что другая программа выплевывается. По-видимому, это то, что он выплевывает, поэтому мне просто нужно работать с ним. – Ducle91

ответ

0

Вы можете вставить эти XmlElements в новый узел XML. Затем вы сможете проанализировать его как действительный XML. Некоторые простые примеры можно найти на MSDN