如何解决检索Xml相同的节点C#
我无法从以下XML文件中获取相同的XML节点。我不明白为什么这样的代码
XmlNodeList xList = xmlRespDoc.SelectNodes("/FCUBS_BODY/Cust-Account-Full/Txn-Profile");
返回NULL。我想做的是,检索所有相同的节点<Txn-Profile>
并放入字符串数组或列表中。我想我在这里缺少一些东西来检索我想要的输出。
请提出建议。
XML:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'>
<S:Header>
<work:WorkContext xmlns:work='http://oracle.com/weblogic/soap/workarea/'>rO0ABXekABx3ZWJs</work:WorkContext>
</S:Header>
<S:Body>
<QUERYCUSTACC_IOFS_RES xmlns='http://fcubs.ofss.com/service/FCUBSAccService'>
<FCUBS_HEADER>
<SERVICE>FCUBSAccService</SERVICE>
<OPERATION>QueryCustAcc</OPERATION>
<SOURCE_OPERATION></SOURCE_OPERATION>
<MSGSTAT>SUCCESS</MSGSTAT>
<ADDL/>
</FCUBS_HEADER>
<FCUBS_BODY>
<Cust-Account-Full>
<Txn-Profile>
<TXN_CODE>CHD</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>150000</TOTAL_AMOUNT>
<TXN_DESCUI>Cash Deposit1</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>CHW</TXN_CODE>
<NO_OF_TXN>8</NO_OF_TXN>
<MAX_TXN_AMOUNT>150000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>
<TXN_DESCUI>Cash Withdrawal1</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>DCL</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>
<TXN_DESCUI>Deposit By Instruments (Clearing)</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>DFR</TXN_CODE>
<NO_OF_TXN>1</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>100000</TOTAL_AMOUNT>
<TXN_DESCUI>Deposit Of Foreign Remittance </TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>DFT</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>
<TXN_DESCUI>Deposit By Instruments (Internal FT)</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>WCL</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>80000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>100000</TOTAL_AMOUNT>
<TXN_DESCUI>Withdrawal By Instruments (Clearing)</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>WFT</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>50000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>100000</TOTAL_AMOUNT>
<TXN_DESCUI>Withdrawal By Instruments (Internal FT)</TXN_DESCUI>
</Txn-Profile>
</Cust-Account-Full>
<FCUBS_WARNING_RESP>
<WARNING>
<WCODE>ST-SAVE-023</WCODE>
<WDESC>Record Successfully Retrieved</WDESC>
</WARNING>
</FCUBS_WARNING_RESP>
</FCUBS_BODY>
</QUERYCUSTACC_IOFS_RES>
</S:Body>
</S:Envelope>
我的代码是:
public static void Main(string[] args)
{
XmlDocument xmlRespDoc = new XmlDocument();
xmlRespDoc.LoadXml(@"D:\xmlData.xml");
XmlNodeList xList = xmlRespDoc.SelectNodes("/FCUBS_BODY/Cust-Account-Full/Txn-Profile");
if (xList != null)
foreach (XmlNode node in xList)
{
Console.WriteLine(node.InnerXml);
}
Console.ReadLine();
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<Cust-Account-Full>
<Txn-Profile>
<TXN_CODE>CHD</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>150000</TOTAL_AMOUNT>
<TXN_DESCUI>Cash Deposit1</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>CHW</TXN_CODE>
<NO_OF_TXN>8</NO_OF_TXN>
<MAX_TXN_AMOUNT>150000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>
<TXN_DESCUI>Cash Withdrawal1</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>DCL</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>
<TXN_DESCUI>Deposit By Instruments (Clearing)</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>DFR</TXN_CODE>
<NO_OF_TXN>1</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>100000</TOTAL_AMOUNT>
<TXN_DESCUI>Deposit Of Foreign Remittance </TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>DFT</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>100000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>
<TXN_DESCUI>Deposit By Instruments (Internal FT)</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>WCL</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>80000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>100000</TOTAL_AMOUNT>
<TXN_DESCUI>Withdrawal By Instruments (Clearing)</TXN_DESCUI>
</Txn-Profile>
<Txn-Profile>
<TXN_CODE>WFT</TXN_CODE>
<NO_OF_TXN>5</NO_OF_TXN>
<MAX_TXN_AMOUNT>50000</MAX_TXN_AMOUNT>
<TOTAL_AMOUNT>100000</TOTAL_AMOUNT>
<TXN_DESCUI>Withdrawal By Instruments (Internal FT)</TXN_DESCUI>
</Txn-Profile>
</Cust-Account-Full>
解决方法
您可以通过以下方式使用 LINQ to XML :
var profiles = XElement.Load(new StreamReader(xmlFileStream)).Descendants("Txn-Profile");
其中xmlFileStream
是xml的 FileStream 。
您可以通过以下元素标签名称来获取它:
XmlNodeList xList = xmlRespDoc.GetElementsByTagName("Cust-Account-Full");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。