0
我有這樣的XML:解析SOAP XML
<?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>
<SampleResponse xmlns="http://tempuri.org/">
<SampleResult>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<tag1>tag1 text</tag1>
<tag2>tag2 text</tag2>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<tag1>tag1 text</tag1>
<tag2>tag2 text</tag2>
</Table>
</NewDataSet>
</diffgr:diffgram>
</SampleResult>
</SampleResponse>
</soap:Body>
</soap:Envelope>
所以,我用下面的代碼解析上面的XML:
string XMLresponse = e.response;
var XResult = XElement.Parse(XMLresponse);
var result = XResult.Descendants("Table")
.Select(t => new
{
tag1 = t.Descendants("tag1").First().Value,
tag2 = t.Descendants("tag2").First().Value,
});
foreach (var res in result)
{
string str = res.tag1; // here i am able get the response
}
listbox.ItemsSource = result;
但我不能將其綁定到列表框。我有一個列表框象下面這樣:
<ListBox x:Name="listbox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="Sample" ></TextBlock>
<TextBlock Text="{Binding tag1}" ></TextBlock>
<TextBlock Text="{Binding tag2}" ></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在我已經加入一個TextBlock,其被重複兩次列表框。但動態文本塊並不與數據綁定。
感謝您的響應克勞斯喬根森。這個解決方案爲我工作。 – 2012-01-16 06:13:12
克勞斯還有一個問題。在我的XML中有時會丟失名爲tag2的標籤。在這裏我想像上面解析它,如果特定的標籤有時丟失,有時它應該是空的該對象。 – 2012-01-16 14:37:08