C# 使用c将子孩子的Xml内容转换为字符串#

C# 使用c将子孩子的Xml内容转换为字符串#,c#,xml,linq,xelement,C#,Xml,Linq,Xelement,这是我第一次发帖,而且我对C#很陌生,所以我感谢你的帮助。我有这么多的代码变体,接近我所需要的,但我不能靠自己 我正在尝试使用c#获取XML sting中子项的内容。这是我收到的刺痛: <?xml version="1.0" encoding="UTF-8"?> <activation> <activationOutput> <AID>7706a84f-5sef5-4b49-891c-98414ebb61d5</AID

这是我第一次发帖,而且我对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>
让我感到困惑的是,如何把这个孩子作为一根绳子拿出来。使用XElement元素可以获得ActivationOutput下所有子元素的值,但我只需要最后一个

string activationOutput = rootActivation.Element("activationOutput").Value;
它给我发送了一个无法使用的长字符串

7706a84f-5sef5-4b49-891c-98414ebb61d518305465463798407encodedxmlstring
我也试过:

IEnumerable<XElement> activationString = rootActivation.Elements("activationString");

但是如果这是唯一一个叫做activationString的元素,那么这也不起作用

string activationString = XDocument.Parse("xmlFilePathHere").Descendents("activationString").FirstOrDefault().Value;
你的尝试

string activationOutput = rootActivation.Element("activationOutput").Value;
确实为您提供了属于
的子节点的所有
text()
节点的串联。显然,这不是你想要的

要单独获取
文本()
节点,请使用

string activation = 
  (string)rootActivation.Element("activationOutput").Element("activationString").Value;
这种方法的一个限制是:它只获取每个元素的第一个

    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
Dim rootActivation作为元素
"测试",
根激活=
7706a84f-5sef5-4b49-891c-98414ebb61d5
18305465463798407
编码的xml字符串
Dim activationString As String=根激活…值

这正是我一直在寻找的。非常感谢你。我知道这是我尝试过的所有元素的某种组合。
string activation = 
  (string)rootActivation.Element("activationOutput").Element("activationString").Value;
    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