Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Искать до конца

82K
13 апреля 2015 года
exivmaks
7 / / 03.03.2015
Всем привет.
Никак не могу решить такой вопрос:
Нужно узнать количество <SUMV_USL> == 242 только у <CODE_MD> ==76.
У меня же получается что доходит до первого совпадения и уходит на другой <ZAP>
Как продолжить поиск в том же <ZAP> пока не дойдет до его конца.

есть XML файл (вернее его часть).

Код:
<ZAP>
        <SUMV_USL>242</SUMV_USL>
        <CODE_MD>76</CODE_MD>
        <SUMV_USL>242</SUMV_USL>
        <CODE_MD>100</CODE_MD>
        <SUMV_USL>242</SUMV_USL>
        <CODE_MD> 76</CODE_MD>
  </ZAP>
<ZAP>
        <SUMV_USL>300</SUMV_USL>
        <CODE_MD>76</CODE_MD>
        <SUMV_USL>300</SUMV_USL>
        <CODE_MD>76</CODE_MD>
        <SUMV_USL>242</SUMV_USL>
        <CODE_MD> 76</CODE_MD>
  </ZAP>
Вот мой код:

Код:
XDocument xml = XDocument.Load(uslug);
               
                               
                var xmsluch = from SLUCH in xml.Descendants("ZAP")
                              where SLUCH.Element("CODE_MD").Value == "76"
                              where SLUCH.Element("SUMV_USL") != null && SLUCH.Element("SUMV_USL").Value == "242"  
 
                              select new
                              {
                                  SUM = SLUCH.Element("SUMV_USL").Value,
                                 
                               };
                foreach (var x in xmsluch)      
                {
                 
                    listBox1.Items.Add(x.SUM);
 
                }
                   label1.Text = listBox1.Items.Count.ToString();
ПОЖАЛУЙСТА ПОМОГИТЕ!!!
СРОЧНО НУЖНО СООРУДИТЬ ОТЧЕТ С ПОМОЩЬЮ ЭТОГО!!!
392
13 апреля 2015 года
cronya
421 / / 03.01.2009
структура файла корявая, нужно сделать правильно и будет счатье
должно быть как то так:
Код:
private void Form1_Load(object sender, EventArgs e)
{
    xmlDoc = new XmlDocument();
    XmlNode BaseNode = xmlDoc.CreateElement("BASE");
    xmlDoc.AppendChild(BaseNode);
    XmlNode rootNode = xmlDoc.CreateElement("ZAP");
    BaseNode.AppendChild(rootNode);
    XmlNode userNode = xmlDoc.CreateElement("SUMV_USL");
    userNode.InnerText = "242";
    rootNode.AppendChild(userNode);
    XmlAttribute attribute = xmlDoc.CreateAttribute("CODE_MD");
    attribute.Value = "76";
    userNode.Attributes.Append(attribute);

    userNode = xmlDoc.CreateElement("SUMV_USL");
    userNode.InnerText = "242";
    rootNode.AppendChild(userNode);
    attribute = xmlDoc.CreateAttribute("CODE_MD");
    attribute.Value = "76";
    userNode.Attributes.Append(attribute);

    userNode = xmlDoc.CreateElement("SUMV_USL");
    userNode.InnerText = "242";
    rootNode.AppendChild(userNode);
    attribute = xmlDoc.CreateAttribute("CODE_MD");
    attribute.Value = "76";
    userNode.Attributes.Append(attribute);

    rootNode = xmlDoc.CreateElement("ZAP");
    BaseNode.AppendChild(rootNode);
    userNode = xmlDoc.CreateElement("SUMV_USL");
    userNode.InnerText = "300";
    rootNode.AppendChild(userNode);
    attribute = xmlDoc.CreateAttribute("CODE_MD");
    attribute.Value = "76";
    userNode.Attributes.Append(attribute);

    userNode = xmlDoc.CreateElement("SUMV_USL");
    userNode.InnerText = "300";
    rootNode.AppendChild(userNode);
    attribute = xmlDoc.CreateAttribute("CODE_MD");
    attribute.Value = "76";
    userNode.Attributes.Append(attribute);

    userNode = xmlDoc.CreateElement("SUMV_USL");
    userNode.InnerText = "242";
    rootNode.AppendChild(userNode);
    attribute = xmlDoc.CreateAttribute("CODE_MD");
    attribute.Value = "76";
    userNode.Attributes.Append(attribute);

    xmlDoc.Save("test-doc.xml");            
}

private void button1_Click(object sender, EventArgs e)
{
    XDocument newDoc = null;
    string Line = string.Empty;
    int idx = 0, pos = 1;
    try
    {
        newDoc = XDocument.Load("test-doc.xml");
        foreach (XElement el in newDoc.Root.Elements())
        {
            Line += "ZAP in Line #" + pos.ToString() + Environment.NewLine;
            foreach (XElement el2 in el.Elements())
            {
                if (el2.Attribute("CODE_MD").Value == "76")
                {
                    if (el2.Value == "242")
                    {
                        idx++;
                        Line += "Name = " + el2.Name + ", Value = " + el2.Value + Environment.NewLine;
                    }
                }
            }
            pos++;
        }
               
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    Line += "Количество = " + idx.ToString() + Environment.NewLine;
    textBox1.Text = Line;
}
файл такой:
Код:
<BASE>
  <ZAP>
    <SUMV_USL CODE_MD="76">242</SUMV_USL>
    <SUMV_USL CODE_MD="76">242</SUMV_USL>
    <SUMV_USL CODE_MD="76">242</SUMV_USL>
  </ZAP>
  <ZAP>
    <SUMV_USL CODE_MD="76">300</SUMV_USL>
    <SUMV_USL CODE_MD="76">300</SUMV_USL>
    <SUMV_USL CODE_MD="76">242</SUMV_USL>
  </ZAP>
</BASE>
Результат вот
Прикрепленные файлы:
14 Кб
Загрузок: 812
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог