我在使用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无关紧要。只需要一个场景,我可以抓住内容并实际使用它。
答案 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();