这是我第一次发帖,而且我对C#很新,所以我很感激帮助。我有这么多代码的变化,这些变化与我需要的很接近,但我不能靠自己。
我正在尝试使用c#在XML sting中获取子子的内容。这是我收到的刺痛:
<?xml version="1.0" encoding="UTF-8"?>
<activation>
<activationOutput>
<AID>7706a84f-5sef5-4b49-891c-98414ebb61d5</AID>
<protectionKeyId>18305465463798407</protectionKeyId>
<activationString>encoded xml string</activationString>// What I need
</activationOutput>
<activationInput>
<activationAttribute>
<attributeName></attributeName>
<attributeValue></attributeValue>
<isvPermission></isvPermission>
<endUserPermission></endUserPermission>
</activationAttribute>
<activationAttribute>
<attributeName></attributeName>
<attributeValue></attributeValue>
</activationAttribute>
<comments></comments>
</activationInput>
</activation>
我需要将 activationString 值输出到字符串中。拥有其他元素会很好,但我只关心进入一个被调用的字符串v2c。标签之间的信息是另一个编码的XML字符串。
我首先使用以下方法将sting引入XML元素:
XElement rootActivation = XElement.Parse(encodedActivationResponse, LoadOptions.SetLineInfo);
让我感到难过的是如何将子小孩作为一个字符串。使用XElement元素获取ActivationOutput下所有子项的值,但我只需要最后一个。
string activationOutput = rootActivation.Element("activationOutput").Value;
它向我发送了一个长不可用的字符串
7706a84f-5sef5-4b49-891c-98414ebb61d518305465463798407encodedxmlstring
我也尝试过:
IEnumerable<XElement> activationString = rootActivation.Elements("activationString");
看起来很有希望,但我不知道如何将价值作为一个字符串。它显示为
{System.Xml.Linq.Extenstions.GetDescendantsXElement&GT;}
我希望我可以使用变量将变量推入字符串:
string v2c = activationString.ToString;
但这不起作用
答案 0 :(得分:1)
您的尝试
string activationOutput = rootActivation.Element("activationOutput").Value;
确实为您提供了text()
个子节点的所有<activationOutput>
个节点的串联。显然,这不是你想要的。
仅使用<activationString>
的{{1}}节点
text()
这种方法的一个限制是:它只获得每个元素的第一个。
答案 1 :(得分:0)
如果这是唯一一个名为activationString的元素,你就可以做到
string activationString = XDocument.Parse("xmlFilePathHere").Descendents("activationString").FirstOrDefault().Value;
答案 2 :(得分:0)
在VB.Net
Dim rootActivation As XElement
'for testing
rootActivation = <activation>
<activationOutput>
<AID>7706a84f-5sef5-4b49-891c-98414ebb61d5</AID>
<protectionKeyId>18305465463798407</protectionKeyId>
<activationString>encoded xml string</activationString>
</activationOutput>
<activationInput>
<activationAttribute>
<attributeName></attributeName>
<attributeValue></attributeValue>
<isvPermission></isvPermission>
<endUserPermission></endUserPermission>
</activationAttribute>
<activationAttribute>
<attributeName></attributeName>
<attributeValue></attributeValue>
</activationAttribute>
<comments></comments>
</activationInput>
</activation>
Dim activationString As String = rootActivation.<activationOutput>.<activationString>.Value