如何解析元素不总是具有相同结构的XML
本文关键字:结构 XML 元素 何解析 | 更新日期: 2023-09-27 17:51:13
我有一个c#应用程序,我正在检查客户端和服务器之间的SOAP消息。
请求和响应始终是XML序列化。消息的一部分有action方法我只需要获取方法但我看到XML中需要的元素并不总是有相同的名称:
下面是一个例子:
这是我需要解析的元素:
<a:Action s:mustUnderstand="1">http://tempuri.org/IMember/GetAuthorizations</a:Action>
有时也可以像这样出现:
<Action d1p1:mustUnderstand="1" xmlns:d1p1="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.w3.org/2005/08/addressing">http://tempuri.org/IMember/GetAuthorizations</Action>
我需要获取的是URL的方法,在本例中,我需要解析该元素以便获得GetAuthorizations
我如何解析这两个线索吗?我不知道是第一种方式还是第二种方式。
试试这个
string input = "<a:Action xmlns:a='"http://tempuri.org'" xmlns:s='"http://tempuri.org'" s:mustUnderstand='"1'">'"http://tempuri.org/IMember/GetAuthorizations'"</a:Action>";
XDocument doc = XDocument.Parse(input);
string mustUnderstand = doc.Elements().Where(x => x.Name.LocalName == "Action").Attributes().Where(y => y.Name.LocalName == "mustUnderstand").FirstOrDefault().Value;