我有这样的SOAP响应:
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
我尝试使用以下代码将此响应填充到winform treeView控件中。
private void DeserializeToTreeViewSoap(string value)
{
if (string.IsNullOrEmpty(value) || !value.IsValidXml()) return;
BeginUpdate();
var xDoc = new XmlDocument();
xDoc.LoadXml(value);
Nodes.Clear();
Nodes.Add(new TreeNode(xDoc.DocumentElement.Name));
var currentNode = Nodes[0];
AddTreeNodeSoap(xDoc.DocumentElement, currentNode);
EndUpdate();
ExpandAll();
}
private void AddTreeNodeSoap(XmlNode soapNode, TreeNode treeNode)
{
if (soapNode.HasChildNodes)
{
for (var x = 0; x <= soapNode.ChildNodes.Count - 1; x++)
{
var xNode = soapNode.ChildNodes[x];
treeNode.Nodes.Add(new TreeNode(xNode.Name));
var currentNode = treeNode.Nodes[x];
AddTreeNodeSoap(xNode, currentNode);
}
}
else
treeNode.Text = soapNode.OuterXml.Trim();
}
我的问题是我丢失了以下信息:
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
xmlns:m="http://www.example.org/stock"
这是因为XmlNode.Name属性不包含此信息,我使用该名称来创建节点。
我无法在XmlNode中看到包含缺失信息的另一个属性。
如何创建包含信息的节点?