使用c#

时间:2017-02-22 00:53:39

标签: c# xml linq xelement

这是我第一次发帖,而且我对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;

但这不起作用

3 个答案:

答案 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