2011-12-01 3 views
0

저는 현재 도시의 "이름", "지역", "위도"위도 및 "lng"을 포함하는 XML 파일을 만들고 있습니다. listeCooVilles가 사전도 있습니다C# Xml 읽기 관련

XmlDocument XmlFile = new XmlDocument(); 
try { 
    XmlFile.Load("..\\..\\liste.xml"); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine("Erreur" + ex.Message); 
}; 
XmlNodeList MyNodeXML = XmlFile.GetElementsByTagName("city"); 
foreach (XmlNode unNode in MyNodeXML) 
{ 
    string nomVille = unNode.Attributes[0].Value; 
    string lat = unNode.Attributes[1].Value; 
    string lng = unNode.Attributes[2].Value; 
    listeCooVilles.Add(nomVille, new PointF(float.Parse(lat), float.Parse(lng))); 
} 

:

여기 내 코드입니다. 여기

내 XML입니다 : 내가 테스트를 위해 샘플을했다 : I에 유래에서 상기와 같은 일을 많은 게시물을보고,하지만 난 여전히 회선에 자동 IndexOutOfRange 예외를 얻을
<?xml version="1.0" encoding="UTF-8"?> 
<cities> 
    <city> 
     <name>Abercorn</name> 
     <region>Montérégie</region> 
     <lat>45.032999</lat> 
     <lng>-72.663057</lng> 
    </city> 
<cities> 

string nomVille = unNode.Attributes[0].Value; 

누군가 도와 줄 수 있습니까? 감사!

+0

속성을 볼 수 없습니까? 이름/지역 등은 요소입니다. –

+0

XML에 속성이 없으므로 항상 예외가 발생합니다. 자식 노드를 찾아야합니다. – Peter

답변

5

요소에는 특성이 없으며 하위 요소 만 있습니다. 속성은 요소와 동일한 레벨의 이름 = 값 쌍입니다. 예 : (원래했던 것처럼)와 (당신이 코딩 한대로) 속성을 사용

<?xml version="1.0" encoding="UTF-8"?> 
<cities> 
    <city name="Abercorn" region="Montérégie" lat="45.032999" lng="-72.663057" /> 
    <city name="Granby" region="Montérégie" lat="45.4" lng="-72.733333" /> 
</cites> 

중첩 요소는 XML 문서를 구조화 모두 동등하게 유효한 방법입니다.

+0

XML 작성 방법은 없습니다. – user1076263

+0

물론 있습니다 ... XmlReader 클래스를 살펴보십시오. http://msdn.microsoft.com/en-us/library/cc189056(v=vs.95).aspx – Josh

3

XML 샘플의 노드에는 특성이 없기 때문에 컬렉션에 null 요소가 들어 있습니다. unNode.Attributes에 유효한 모음을 제공해야

<?xml version="1.0" encoding="UTF-8"?> 
<cities> 
    <city testAttr = "hello!"> 
     <name>Abercorn</name> 
     <region>Montérégie</region> 
     <lat>45.032999</lat> 
     <lng>-72.663057</lng> 
    </city> 
<cities> 

testAttr의 추가 :

가로 변경합니다.

+0

주석 주셔서 감사합니다 : 시도했지만 여전히 예외를 throw합니다 .. – user1076263

2

도시 태그에 속성을 사용하고 있지만 xml 요소를 사용해야한다고 생각합니다.

5

우리가 지적한대로 요소는 속성이 아닙니다. 코드를 다음으로 변경해야합니다.

nomVille = unNode.Item["name"].Value 
    region = unNode.Item["region"].Value 
    lat = unNode.Item["lat"].Value 
    lng = unNode.Item["lng"].Value