[英]Reading xml document with several nodes
我之前使用過以下代碼,但是這次的xml不同:
protected string ReturnXmlValue(XmlDocument myXDoc, string field)
{
var retval = string.Empty;
try
{
var node = myXDoc.GetElementsByTagName(field);
if (node.Count > 0)
{
var xmlNode = node.Item(0);
if (xmlNode != null)
{
retval = xmlNode.InnerText;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
throw;
}
return retval;
}
這是我的xml文件被刪減后的示例:
<RichDBDS>
<TrxDetailCard>
<TRX_HD_Key>18683435</TRX_HD_Key>
<Date_DT>2015-10-22T21:32:00.233+00:00</Date_DT>
<TRX_Card_Key>15263569</TRX_Card_Key>
<Total_Amt_MN>22.0000</Total_Amt_MN>
<Result_CH>0 </Result_CH>
<Result_Txt_VC>APPROVED</Result_Txt_VC>
<Approval_Code_CH>0943253</Approval_Code_CH>
</TrxDetailCard>
<TrxDetailCard>
<TRX_HD_Key>18683825</TRX_HD_Key>
<Date_DT>2015-10-23T21:32:00.233+00:00</Date_DT>
<TRX_Card_Key>15263569</TRX_Card_Key>
<Total_Amt_MN>32.0000</Total_Amt_MN>
<Result_CH>0 </Result_CH>
<Result_Txt_VC>APPROVED</Result_Txt_VC>
<Approval_Code_CH>093389</Approval_Code_CH>
</TrxDetailCard>
</RichDBDS>
我與xml的合作不是很多,所以我不確定如何搜索xml的具體數量。 我可以有幾個TrxDetailCard。 當我只有一張TrxDetailCard時,我知道如何獲得金額,但是我需要返回TrxDetailCard以獲取所需金額的點擊量。
因此,如果我正在尋找32.00的TrxDetailCard,則需要該方法返回:
<TrxDetailCard>
<TRX_HD_Key>18683825</TRX_HD_Key>
<Date_DT>2015-10-23T21:32:00.233+00:00</Date_DT>
<TRX_Card_Key>15263569</TRX_Card_Key>
<Total_Amt_MN>32.0000</Total_Amt_MN>
<Result_CH>0 </Result_CH>
<Result_Txt_VC>APPROVED</Result_Txt_VC>
<Approval_Code_CH>093389</Approval_Code_CH>
</TrxDetailCard>
我將如何去做呢?
嘗試這個
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string xml = "<RichDBDS>" + "<TrxDetailCard>" + "<TRX_HD_Key>18683435</TRX_HD_Key>" + "<Date_DT>2015-10-22T21:32:00.233+00:00</Date_DT>" + "<TRX_Card_Key>15263569</TRX_Card_Key>" + "<Total_Amt_MN>22.0000</Total_Amt_MN>" + "<Result_CH>0 </Result_CH>" + "<Result_Txt_VC>APPROVED</Result_Txt_VC>" + "<Approval_Code_CH>0943253</Approval_Code_CH>" + "</TrxDetailCard>" + "<TrxDetailCard>" + "<TRX_HD_Key>18683825</TRX_HD_Key>" + "<Date_DT>2015-10-23T21:32:00.233+00:00</Date_DT>" + "<TRX_Card_Key>15263569</TRX_Card_Key>" + "<Total_Amt_MN>32.0000</Total_Amt_MN>" + "<Result_CH>0 </Result_CH>" + "<Result_Txt_VC>APPROVED</Result_Txt_VC>" + "<Approval_Code_CH>093389</Approval_Code_CH>" + "</TrxDetailCard>" + "</RichDBDS>"; XElement richDBDS = XElement.Parse(xml); XElement results = richDBDS.Elements("TrxDetailCard").Where(x => (decimal)x.Element("Total_Amt_MN") == (decimal)32.0000).FirstOrDefault(); } } }
您可以使用Linq-to-Xml
var str = File.ReadAllText(@"C:\YourDirectory\sample.xml");
XDocument xDoc = XDocument.Parse(str);
var trxNodes = xDoc.Descendants("TrxDetailCard");
var node = trxNodes.First(n => double.Parse(n.Element("Total_Amt_MN").Value) == 32.00);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.