30/09/2018, 19:17

Xử lý XML để lấy được giá trị mong muốn

Mình có 1 xâu dạng xml hoàn chỉnh như thế này:

<?xml version="1.0" encoding="UTF-8"?>
<dtx xmlns="http://google.com">
  <meeting name="Chien" surface="S" startTime="3:00">
   <race race="1" time="1300" name="" type="D" distance="400">
    <runner runner="1" name="DocCoCauBai" />
    <runner runner="2" name="Duong Qua" />
    <runner runner="3" name="Quach Tinh" />
    <runner runner="4" name="Kim Luan Phap Vuong" />     
</race>
<race race="2" time="1400" name="" type="D" distance="445">
  <runner runner="1" name="Dong Ta" />
  <runner runner="2" name="Tay Doc" />
  <runner runner="3" name="Nam De" />
  <runner runner="4" name="Bac Cai" />      
</race>
</meeting>
</dtx>

Mình dùng hàm này để lấy được các giá trị name:

private List<string> getValue(string xmlStr, string urn, string att)
{
    List<string> categories = new List<string>();
    try
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xmlStr);

        XmlNodeList nodes = doc.DocumentElement.GetElementsByTagName(urn);

        foreach (XmlNode node in nodes)
        {
            categories.Add(node.Attributes[att].Value);
        }

    }
    catch
    {
        HDMessageBox.Show("404 - Not Found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    return categories;
}

Ví dụ gọi: getValue(xmlStr, “meeting”, “name”) sẽ cho 1 mảng các name.
Vấn đề bây giờ là mình chỉ muốn lấy các name thuộc race =“1”, ko muốn lấy các name thuộc race =“2” mà không biết làm sao, tham khảo nhiều mà ko ra kết quả nên khá mệt mỏi, mong ngóng các cao nhân vào giúp đỡ!

Quân viết 21:18 ngày 30/09/2018

mình nghĩ là bạn cần tham khảo cách lấy ra attribute của 1 tag xml và so sánh với giá trị cần lấy, như ví dụ bạn đứa đã có cách lấy ra attribute value r đấy, bạn xem kĩ lại cho hiểu những gì mình đã viết ra là có giải pháp

Mr. July viết 21:30 ngày 30/09/2018

mình nghĩ là bạn cần tham khảo cách lấy ra attribute của 1 tag xml và so sánh với giá trị cần lấy, như ví dụ bạn đứa đã có cách lấy ra attribute value r đấy,

Mình khá là hiểu ý bạn, nhưng cái này mình lấy theo urn và attribute, cụ thể ở đây cả race 1 và race 2 giông nhau ở 2 cái này. Và việc gọi hàm để lấy giá trị name và giá trị race là khác nhau nữa.
Anw, tốt hơn cho những vấn đề cụ thể là đưa ra đáp án bằng code, vì mình cũng đọc khá nhiều rồi nên khá rối, dù sao cũng cảm ơn bạn

Quân viết 21:18 ngày 30/09/2018

Có cùng attribute nhưng khác value, bạn có thể thay vì lấy trực tiếp name thì bạn lấy ra các tag race, rồi tìm tag race nào có attribute race=1, từ tag race này bạn mới lấy value của attribute name, problem solve

Mr. July viết 21:19 ngày 30/09/2018

Cảm ơn bạn nhiều, hqua mình khá rối, đến hôm nay đọc lại mới tìm ra cách, những gì bạn nói là chuẩn xác rồi

Bài liên quan
0