Искать до конца
Никак не могу решить такой вопрос:
Нужно узнать количество <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>
<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();
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();
СРОЧНО НУЖНО СООРУДИТЬ ОТЧЕТ С ПОМОЩЬЮ ЭТОГО!!!
должно быть как то так:
Код:
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;
}
{
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>
<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>