2016-08-17 10 views
1

このXMLメッセージでAPP_DATE要素を読み取ろうとしています。 LINQを使用してみましたが、あなたは、任意のコード例を提供していませんでしたが、私はあなたがあるため、名前空間の苦労と仮定しているためSOAPメッセージから要素を読み取る

<?xml version="1.0" encoding="utf-8" ?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<MyResponse xmlns="http://tempuri.org/"> 
<MyResult> 
    <APP_TYPE>I</APP_TYPE> 
    <APP_NO>152240</APP_NO> 
    <APP_DATE>10/03/2016</APP_DATE> 
    </MyResult> 
    </MyResponse> 
    </soap:Body> 
</soap:Envelope> 

答えて

1

MyResultを確認することはできません読み取ることができません。だから、これを試してみてください。

var result = XDocument.Load("data.xml").Root 
         .Descendants(XName.Get("APP_DATE", "http://tempuri.org/")) 
         .FirstOrDefault()?.Value; 

両方の例では、私はの名前空間を指定する必要がどのように参照してください。

XmlDocument doc = new XmlDocument(); 
doc.Load("data.xml"); 
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); 
ns.AddNamespace("soap", "http://www.w3.org/2003/05/soap-envelope"); 
ns.AddNamespace("x", "http://tempuri.org/"); 

var result = doc.SelectSingleNode("//soap:Envelope/soap:Body/x:MyResponse/x:MyResult/x:APP_DATE", ns).InnerText; 

より深く理解するためにあなたはそれがこのようになるのLINQを使用してthis question

読むことができます私が探しているもの

+0

"?"あなたのlinq querryで行うのですか? – gismo

+1

@gismo - 'x == null 'のためのC#6.0の構文的な砂糖ですか?/* x * /:x.Value'の型のデフォルト。 [MSDN](https://msdn.microsoft.com/en-us/magazine/dn802602.aspx)で準備することができます。 –

関連する問題