C# 使用c将子孩子的Xml内容转换为字符串#
这是我第一次发帖,而且我对C#很陌生,所以我感谢你的帮助。我有这么多的代码变体,接近我所需要的,但我不能靠自己 我正在尝试使用c#获取XML sting中子项的内容。这是我收到的刺痛: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
<?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