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

时间:2015-05-29 21:45:45

标签: c# xml parsing

我在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>

我需要获得的是网址的方法,在这种情况下,我需要解析此元素,以便我可以获得 GetAuthorizations

  

有关如何解析两者的任何线索?我不知道它是第一种方式还是第二种方式。

1 个答案:

答案 0 :(得分:0)

试试这个

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