【发布时间】:2015-05-29 21:45:45
【问题描述】:
我有一个 C# 应用程序,用于检查客户端和服务器之间的 SOAP 消息。
请求和响应总是 XML 序列化。部分消息具有操作方法,我只需要获取方法,但我看到 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的Method,在这种情况下我需要解析这个元素,这样我才能得到GetAuthorizations
关于如何解析两者的任何线索?我不知道它是第一种还是第二种。
【问题讨论】:
-
看起来它们都是相同的 XML,但命名空间的应用不同。你是如何解析 XML 的?一个合适的 XML 解析器应该考虑这些命名空间。
-
你能把它当作一个字符串吗?如果所有其他方法都失败了,您可能很容易通过这种方式进行区分,然后将其改组到正确的解析器......如果这确实是您的意图。
-
是的其实是一个字符串
-
您的第一个 XML 片段无效:它缺少
a命名空间的定义。 (尝试上传here。)另一方面,您的第二个片段是有效的。这使我相信您可能在问题中省略了 XML 根节点。对于这两种情况,您能否编辑您的问题以包括 XML 根节点和任何中间节点到Action节点? -
@VAAA 我认为这只是整个 XML 的一部分。如果正确,您还需要显示
a和s前缀的声明。判断两个 XML 是否会被解析器视为相同,这一点很重要