从soap解析字符串并获取数据,c#

时间:2014-07-09 12:02:43

标签: c# xml

我在使用C#中的某些XML解析时遇到了问题。

我的XML是这样的:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <GetArticleByIDResponse xmlns="namespace_1">
    <GetArticleByIDResult xmlns:a="namespace_a" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:ArticleHeader>Header text here</a:ArticleHeader>
    <a:Content>Content here</a:Content>
    </GetArticleByIDResult>
    </GetArticleByIDResponse>
  </s:Body>
</s:Envelope>

如何在解析为字符串时从该XML获取内容和文章标题。我尝试了很多例子,并且都失败了。

如果它的linq或XmlDocument无关紧要。只需要一个场景,我可以抓住内容并实际使用它。

2 个答案:

答案 0 :(得分:0)

添加到我的评论.Net肥皂系统被窃听或者只是火焰错误,因为它不支持使用xmlns作为一个namcespace因为一些愚蠢的原因我花了很多时间来解决这个问题从php客户端到.Net Server到正确的尝试一下。

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <GetArticleByIDResponse xmlns="namespace_1">
      <GetArticleByIDResult>
        <ArticleHeader xmlns="namespace_a">Header text here</ArticleHeader>
        <Content xmlns="namespace_a">Content here</Content>
      </GetArticleByIDResult>
    </GetArticleByIDResponse>
 </Body>
</Envelope>

我认为如果您应该使用php发送到soap我应该有效我修复了php https://bugs.php.net/bug.php?id=64704&edit=3的功能/错误请求,如果你使用另一个soap客户端请求将纠正php的问题你需要看看它是否能告诉它使用命名/ taged命名空间的内嵌命名空间(我认为这就是他们所谓的但我无法确定)

答案 1 :(得分:0)

使用LINQ-to-XML:

XNamespace a = "namespace_a";
XDocument doc = XDocument.Parse("your xml string here");
var header = (string)doc.Root.Descendants(a + "ArticleHeader").FirstOrDefault();
var content = (string)doc.Root.Descendants(a + "Content").FirstOrDefault();