使用 LINQ 和 XDocument 获得 children of XML
Get children of XML using LINQ and XDocument
我可以解析一个 XML 并像这样从中获取这个特定的块:
var document = XDocument.Parse(xml);
var envelopeStatusElement = document.Root
.Elements()
.SingleOrDefault(e => e.Name.LocalName == "EnvelopeStatus");
信封状态元素:
<EnvelopeStatus xmlns="http://www.docusign.net/API/3.0">
<RecipientStatuses>
<RecipientStatus>
<Type>Signer</Type>
<Email>test@dev.com</Email>
<Status>Sent</Status>
<RecipientIPAddress />
<CustomFields>
<CustomField>123</CustomField>
</CustomFields>
</RecipientStatus>
</RecipientStatuses>
<EnvelopeID>123456789</EnvelopeID>
<CustomFields>
<CustomField>
<Name>templateUsageRestriction</Name>
<Show>False</Show>
<Required>False</Required>
<Value>allOptions</Value>
</CustomField>
<CustomField>
<Name>mailingListId</Name>
<Show>False</Show>
<Required>False</Required>
<Value>987</Value>
</CustomField>
</CustomFields>
</EnvelopeStatus>
我很难获得 RecipientStatus(123) 中的 CustomField 的值以及 CustomFields 中的 CustomField 的值,但名称为 mailingListId(987)。
我已经接近尝试我在 this pic 中得到的东西,但是必须有一个更有效的方法来做到这一点,如果它非常明显对于 LINQ 和 C# 来说仍然很新,我们深表歉意
您的 EnvelopeStatus
有一个默认命名空间,因此每个元素都必须以它为前缀。您可以获取第一个 RecipientStatus
中 CustomFields
中第一个元素的值,例如:
XNamespace ns = "http://www.docusign.net/API/3.0";
var firstStatusFirstCustomFieldValue = document.Element(ns + "EnvelopeStatus")
.Element(ns + "RecipientStatuses")
.Elements(ns + "RecipientStatus")
.First()
.Element(ns + "CustomFields")
.Elements(ns + "CustomField")
.First().Value;
我可以解析一个 XML 并像这样从中获取这个特定的块:
var document = XDocument.Parse(xml);
var envelopeStatusElement = document.Root
.Elements()
.SingleOrDefault(e => e.Name.LocalName == "EnvelopeStatus");
信封状态元素:
<EnvelopeStatus xmlns="http://www.docusign.net/API/3.0">
<RecipientStatuses>
<RecipientStatus>
<Type>Signer</Type>
<Email>test@dev.com</Email>
<Status>Sent</Status>
<RecipientIPAddress />
<CustomFields>
<CustomField>123</CustomField>
</CustomFields>
</RecipientStatus>
</RecipientStatuses>
<EnvelopeID>123456789</EnvelopeID>
<CustomFields>
<CustomField>
<Name>templateUsageRestriction</Name>
<Show>False</Show>
<Required>False</Required>
<Value>allOptions</Value>
</CustomField>
<CustomField>
<Name>mailingListId</Name>
<Show>False</Show>
<Required>False</Required>
<Value>987</Value>
</CustomField>
</CustomFields>
</EnvelopeStatus>
我很难获得 RecipientStatus(123) 中的 CustomField 的值以及 CustomFields 中的 CustomField 的值,但名称为 mailingListId(987)。
我已经接近尝试我在 this pic 中得到的东西,但是必须有一个更有效的方法来做到这一点,如果它非常明显对于 LINQ 和 C# 来说仍然很新,我们深表歉意
您的 EnvelopeStatus
有一个默认命名空间,因此每个元素都必须以它为前缀。您可以获取第一个 RecipientStatus
中 CustomFields
中第一个元素的值,例如:
XNamespace ns = "http://www.docusign.net/API/3.0";
var firstStatusFirstCustomFieldValue = document.Element(ns + "EnvelopeStatus")
.Element(ns + "RecipientStatuses")
.Elements(ns + "RecipientStatus")
.First()
.Element(ns + "CustomFields")
.Elements(ns + "CustomField")
.First().Value;