2011-07-05 34 views
10

Tôi cần đọc một tệp XML vào từ điển.Đọc XML từ điển

Tôi đọc một số hướng dẫn và tôi chỉ bị nhầm lẫn với những từ lạ mà tôi không hiểu (chẳng hạn như nút, xác thực XML, v.v.). Vì vậy, bạn có thể vui lòng hướng dẫn tôi qua?

Tôi có một tập tin XML được viết bằng định dạng này:

<database> 
    <def number="1" name="one"/> 
    <def number="2" name="two"/> 
</database> 

Như đã đề cập, tôi muốn lưu trữ nó trong một cuốn từ điển. Làm thế nào tôi sẽ đi về điều đó?

+2

Các câu hỏi và câu trả lời chẳng hạn như câu hỏi và điều này làm cho trang web này trở nên tuyệt vời. 1 cho cả hai. – neverseenjack

Trả lời

14
var data = XElement.Parse(xml) 
    .Elements("def") 
    .ToDictionary(
     el => (int)el.Attribute("number"), 
     el => (string)el.Attribute("name") 
    ); 

này:

  • phân tích cú pháp xml vào một XElement (bắt đầu từ <database>)
  • lặp trên các <def ...> yếu tố
  • hình thức một cuốn từ điển, sử dụng @number là chìa khóa (giải thích như một int) và @name làm giá trị (dưới dạng một chuỗi)
  • gán điều này d ictionary đến data, được nhập hoàn toàn là Dictionary<int,string>
7

Câu hỏi của bạn là cơ bản, nhưng không phù hợp. Đừng lo lắng. Tôi sẽ giải thích những gì bạn nên làm.

trước tiên bạn phải tải tệp XML này (nếu nó nằm trên đĩa). Nếu không, bạn không cần bước này

XDocument database = XDocument.Load(pathToYourXmlFile); 

lên đến đây, bạn có:

<database> 
    <def number="1" name="one"/> 
    <def number="2" name="two"/> 
</database> 

Sau đó, bạn có để có được một danh sách tất cả def yếu tố:

List<XElement> defs = database.Elements("def"); 

đến đây, bạn nhận được:

<def number="1" name="one"/> 
<def number="2" name="two"/> 

Bây giờ, bạn sẽ nhận được mỗi mục trong danh sách (mỗi def trong defs):

foreach(XElement def in defs) 
{ 
    // Here you have each def <def number="x" name="y" /> 
    int number = def.Attribute("number").value; 
    string name = def.Attribute("name").value; 
} 

mã để trích xuất thông tin từ mỗi def là:

int number = def.Attribute("number").value; 
string name = def.Attribute("name").value; 

Bây giờ bạn có số điện thoại và tên, chỉ cần thêm nó vào từ điển của bạn.

dictionary.Add(number, name); 

Hy vọng điều đó sẽ hữu ích.

+2

Nếu đó là 'database.Elements (" def "). ToList()'? – codeulike