使用 C# 从子子项中获取 Xml 内容到字符串中
Get Xml content into a string from a subchild using c#
这是我第一次发帖,我对 C# 还很陌生,所以非常感谢您的帮助。我有这么多接近我需要的代码的变体,但我不能自己得到。
我正在尝试使用 C# 在 XML 字符串中获取子项的内容。这是我收到的刺痛:
<?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>}
我希望我可以获取变量并将其推入字符串,使用:
string v2c = activationString.ToString;
但这也行不通
如果这是唯一一个名为 activationString 的元素,您就可以这样做
string activationString = XDocument.Parse("xmlFilePathHere").Descendents("activationString").FirstOrDefault().Value;
你的尝试
string activationOutput = rootActivation.Element("activationOutput").Value;
确实为您提供了作为 <activationOutput>
子节点的所有 text()
节点的串联。显然,这不是你想要的。
单独获取 <activationString>
的 text()
节点使用
string activation =
(string)rootActivation.Element("activationOutput").Element("activationString").Value;
这种方法的一个限制是:它只获取每个元素中的第一个。
在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
这是我第一次发帖,我对 C# 还很陌生,所以非常感谢您的帮助。我有这么多接近我需要的代码的变体,但我不能自己得到。
我正在尝试使用 C# 在 XML 字符串中获取子项的内容。这是我收到的刺痛:
<?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>}
我希望我可以获取变量并将其推入字符串,使用:
string v2c = activationString.ToString;
但这也行不通
如果这是唯一一个名为 activationString 的元素,您就可以这样做
string activationString = XDocument.Parse("xmlFilePathHere").Descendents("activationString").FirstOrDefault().Value;
你的尝试
string activationOutput = rootActivation.Element("activationOutput").Value;
确实为您提供了作为 <activationOutput>
子节点的所有 text()
节点的串联。显然,这不是你想要的。
单独获取 <activationString>
的 text()
节点使用
string activation =
(string)rootActivation.Element("activationOutput").Element("activationString").Value;
这种方法的一个限制是:它只获取每个元素中的第一个。
在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