【发布时间】:2020-09-12 06:03:37
【问题描述】:
我有来自服务的 4000 行 xmlresponse。我使用所需的标签名称从那个大 xml 中提取了特定部分
XmlNodeList xmlForms = xmlDoc.GetElementsByTagName("Form");
从此节点示例部分 xml 如下所示
<Form>
<FormID>3434294</FormID>
<StatusDate>0001-01-01T00:00:00</StatusDate>
<InternalFormNo>CADFADSFSAGDSADG01</InternalFormNo>
<ExternalFormNo>CADFASDFASFSC1001</ExternalFormNo>
<ProposalDescription>Treatment</ProposalDescription>
<ProposalForm>false</ProposalForm>
<StateApprovals>
<StateApproval>
<StateApprovalID>2245363363636</StateApprovalID>
<IssueLimitSet>
<IssueLimitSetID>88</IssueLimitSetID>
<Name>AccAdv</Name>
<Note />
<ModifyDate>0001-01-01T00:00:00</ModifyDate>
<IssueLimits>
<IssueLimit>
<IssueLimtID>80</IssueLimtID>
<GIAmount>62</GIAmount>
<SIAmount>0.00</SIAmount>
<ChangeProcessingCGIAmount>0</ChangeProcessingCGIAmount>
<MaximumMultiSelect>0</MaximumMultiSelect>
<CreateDate>0001-01-01T00:00:00</CreateDate>
<ModifyDate>0001-01-01T00:00:00</ModifyDate>
</IssueLimit>
</IssueLimits>
</IssueLimitSet>
<SpecialProcessing>false</SpecialProcessing>
<ModifyUser>TESTUSER</ModifyUser>
<ModifyDate>2016-02-17T17:52:59.163</ModifyDate>
</StateApproval>
</StateApprovals>
</Form>
我需要读取节点 GIAmount 并提取它的值 (62)。但是 xpath 表示法总是给我空值。如何从此子 xml 中读取此子节点。简单的 xpath 也总是给出 null 。
foreach (XmlNode form in xmlForms)
{
var statusDate= form.SelectSingleNode("/Form/StatusDate"); //This always null i am getting
}
----------------原始xml------------在Variations->Forms->Form下 --在某些情况下,出现多个表单标签,我需要读取每个表单中的特定节点-------
<?xml version="1.0" encoding="utf-8"?>
<Product xmlns="http://testtest.com/twmku">
<ProductID>72</ProductID>
<InternalDescription>AccidentAdvance</InternalDescription>
<ExternalDescription>AccidentAdvance</ExternalDescription>
<Variations>
<Variation>
<VariationID>231</VariationID>
<InternalDescription>AccidentAdvance123</InternalDescription>
<ExternalDescription>AccidentAdvance</ExternalDescription>
<ProposalDescription />
<IsProposalReady>false</IsProposalReady>
<StatusDate>2009-03-26T00:00:00</StatusDate>
<EffectiveDate>2009-04-01T00:00:00</EffectiveDate>
<WithdrawnDate>0001-01-01T00:00:00</WithdrawnDate>
<ModifyUser>Utesruser</ModifyUser>
<ModifyDate>2011-11-30T10:35:26.313</ModifyDate>
<Employers />
<Forms>
<Form>
<FormID>3493</FormID>
<IsGeneric>true</IsGeneric>
<HasLimitsInUnits>true</HasLimitsInUnits>
<Description>AccAdv Master Policy</Description>
<CreateUser>US\testMW</CreateUser>
<CreateDate>0001-01-01T00:00:00</CreateDate>
<ModifyUser>US\testMW</ModifyUser>
<ModifyDate>2011-12-12T11:42:40.06</ModifyDate>
<DataElements />
<StateApprovals>
<StateApproval>
<StateApprovalID>2256556</StateApprovalID>
<IssueLimitSet>
<IssueLimitSetID>88</IssueLimitSetID>
<Name>AccAdv Modtest</Name>
<Note />
<ModifyDate>0001-01-01T00:00:00</ModifyDate>
<IssueLimits>
<IssueLimit>
<IssueLimtID>80</IssueLimtID>
<Keyword>AccAdv Mod 1</Keyword>
<MinMarketingLimit>0.50</MinMarketingLimit>
<MaxMarketingLimit>12.00</MaxMarketingLimit>
<CGIAmount>0.00</CGIAmount>
<GIAmount>6</GIAmount>
<SIAmount>0.00</SIAmount>
<ChangeProcessingCGIAmount>0</ChangeProcessingCGIAmount>
<CreateDate>0001-01-01T00:00:00</CreateDate>
<ModifyDate>0001-01-01T00:00:00</ModifyDate>
</IssueLimit>
</IssueLimits>
</IssueLimitSet>
<StateRequirementSet />
<QuestionSet />
<SICSet />
<DateFiled>0001-01-01T00:00:00</DateFiled>
<SpecialProcessing>false</SpecialProcessing>
<ModifyUser>JBtestD</ModifyUser>
<ModifyDate>2016-02-18T14:39:50.927</ModifyDate>
</StateApproval>
</StateApprovals>
<Parameters />
<IsSelected>true</IsSelected>
</Form>
<Form>
<FormID>3495</FormID>
<IsGeneric>true</IsGeneric>
<HasLimitsInUnits>true</HasLimitsInUnits>
<Description>AccAdv Master main</Description>
<CreateUser>US\testMqW</CreateUser>
<CreateDate>0001-01-01T00:00:00</CreateDate>
<ModifyUser>US\testMW</ModifyUser>
<ModifyDate>2011-12-12T11:42:40.06</ModifyDate>
<DataElements />
<StateApprovals>
<StateApproval>
<StateApprovalID>26556</StateApprovalID>
<IssueLimitSet>
<IssueLimitSetID>88</IssueLimitSetID>
<Name>AccAdv Moretest</Name>
<Note />
<ModifyDate>0001-01-01T00:00:00</ModifyDate>
<IssueLimits>
<IssueLimit>
<IssueLimtID>84</IssueLimtID>
<Keyword>AccAdv Mod 1</Keyword>
<MinMarketingLimit>0.50</MinMarketingLimit>
<MaxMarketingLimit>12.00</MaxMarketingLimit>
<CGIAmount>0.00</CGIAmount>
<GIAmount>34</GIAmount>
<SIAmount>0.00</SIAmount>
<ChangeProcessingCGIAmount>0</ChangeProcessingCGIAmount>
<CreateDate>0001-01-01T00:00:00</CreateDate>
<ModifyDate>0001-01-01T00:00:00</ModifyDate>
</IssueLimit>
</IssueLimits>
</IssueLimitSet>
<StateRequirementSet />
<QuestionSet />
<SICSet />
<DateFiled>0001-01-01T00:00:00</DateFiled>
<SpecialProcessing>false</SpecialProcessing>
<ModifyUser>JBtestD</ModifyUser>
<ModifyDate>2016-02-18T14:39:50.927</ModifyDate>
</StateApproval>
</StateApprovals>
<Parameters />
<IsSelected>true</IsSelected>
</Form>
</Forms>
<ParameterValueSets />
<AllowCustomRates>false</AllowCustomRates>
</Variation>
</Variations>
</Product>
【问题讨论】: