我負責從XML POST Response中檢索特定數據。如何在XML POST Response中查找特定數據?
這裏的XML回覆的例子:
<ServiceHistoryArray>
<RecordID>XD116067*401529</RecordID>
<SWR>
<V Idx="1">7932</V><V Idx="2">7932</V><V Idx="3">7932</V><V Idx="4">7932</V>
</SWR>
<Comments/>
<Mileage>6</Mileage>
<Operation>
<V Idx="1">Z7000*WPDIP****PRE-DELIVERY INSPECTION - BASE TIME</V><V Idx="2">Z911*INC****ETCH WINDOWS</V><V Idx="3">B0048*WPBS4****FASCIA, FRONT BUMPER - REPLACE ONE PIECE</V><V Idx="4">9997*WPBS4****</V>
</Operation>
<CloseDate>1998-12-30</CloseDate>
<OpenDate>1998-10-16</OpenDate>
<PartsAmount>
<V Idx="1">0.00</V><V Idx="2">0.00</V><V Idx="3">166.32</V><V Idx="4">0.00</V>
</PartsAmount>
<LaborAmount>
<V Idx="1">64.80</V><V Idx="2">3.60</V><V Idx="3">140.40</V>
</LaborAmount>
<Warranty>
<S Idx="1">ü96ü0ýý10232632ü4Hü1</S><S Idx="2">ü96ü0ýý10232632ü4Hü1</S><S Idx="3">ü96ü0ýý10232632ü4Hü1</S>
</Warranty>
</ServiceHistoryArray>
我需要連接所有相關的「V」元素內的文字。
例:
7392 Z700 * WDIP ****發貨前檢查 - 基本時間0.00 64.80
7392 Z911 * INC **** ETCH WINDOWS 0.00 3.60
等等
這裏的我的代碼迄今:
// String variable to store the XML POST Reply
string replyString = WebRequestPostData("http://" + maskedTextBox1.Text + ":" + maskedTextBox2.Text, payload);
XmlDocument replyDoc = new XmlDocument(); // New XmlDocument from reply
replyDoc.LoadXml(replyString);
XmlNodeList list = replyDoc.SelectNodes("//ServiceHistoryArray/*"); // XmlNodeList based on child elements of <ServiceHistoryArray> node.
var nodees = new List<XmlNode>(list.Cast<XmlNode>().ToArray());
// Finds Mileage, CloseDate, and OpenDate values and displays them on form.
foreach (XmlNode node in nodees)
{
switch (node.Name)
{
case "OpenDate":
textBox1.Text = node.InnerText;
break;
case "CloseDate":
textBox2.Text = node.InnerText;
break;
case "Mileage":
textBox3.Text = node.InnerText;
break;
}
}
// This section is supposed to display the concatenated values of the <V> elements:
for (int i = 0; i < nodees.Count; i++)
{
if (nodees[i].HasChildNodes)
{
for (int j = 0; j < nodees[i].ChildNodes.Count; j++)
{
switch (nodees[i].ChildNodes[j].NodeType)
{
case XmlNodeType.Text:
break;
case XmlNodeType.Element:
switch (nodees[i].ChildNodes[j].Attributes[0].Value)
{
case "1":
Console.WriteLine("1-" + nodees[i].ChildNodes[j].InnerText + " ");
break;
case "2":
Console.WriteLine("2-" + nodees[i].ChildNodes[j].InnerText + " ");
break;
case "3":
Console.WriteLine("3-" + nodees[i].ChildNodes[j].InnerText + " ");
break;
case "4":
Console.WriteLine("4-" + nodees[i].ChildNodes[j].InnerText + " ");
break;
}
break;
}
}
}
}
連接值將需要顯示在ListBox控件。另外,我需要嘗試編寫這個過程,而不是預測一系列的元素;在這種情況下,有4個。POST請求的其他一些實例可能會返回10或2或其他。
我意識到,這可能會或可能不會影響其他用戶,但希望我不是唯一一個在那裏這個問題...
第一次更改:如果可能的話,使用LINQ to XML。這是一個更簡單的XML API。 –
我知道......我一直在這裏看到有關Xml的迴應。我真的需要學習。但是,任何使用「舊」方法的輸入將不勝感激。 – PDXWReX