2014-10-24 2 views
0

올바른 형식이 아니더라도 XML 파일이 있습니다. 그게 내 주요 목표이기 때문에 그냥 값을 검색하고 싶습니다. 또한이 파일은 한 줄로되어 있습니다. 파일은 다음과 유사합니다. xmlReader가 xml의 한 줄을 파싱합니다.

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

나는 우선 첫 번째 부분에 수 있었다, 그러나 나는 두 번째 부분과 세 번째 부분을 구문 분석려고 할 때 나는 "라인 하나에 여러 루트"오류가 발생합니다. 그렇다면 어떻게 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

새 XML 노드에 해당 XmlElements를 삽입 할 수 있습니다. 그런 다음이를 유효한 XML로 구문 분석 할 수 있어야합니다. 어떤 간단한 예제는 MSDN

관련 문제