如何解析元素不总是具有相同结构的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

我如何解析这两个线索吗?我不知道是第一种方式还是第二种方式。

如何解析元素不总是具有相同结构的XML

试试这个

            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;​