1

これが私が使用しているXMLです。LineItemDetailsの複数のインスタンスがあり、そのうちの1つだけを投稿しました...

<LineItemDetail>
    <DetailNumber>1</DetailNumber> 
    <LineItemNumber>1</LineItemNumber> 
    <BatchSequenceNumber>1</BatchSequenceNumber> 
    <RecordSequenceWithinBatch>1</RecordSequenceWithinBatch> 
    <ChargeAmount Name="GrossBilled">365.380</ChargeAmount> 
    <Tax>
        <TaxType>Tax</TaxType> 
        <TaxAmount Name="Billed">15.630</TaxAmount> 
        <TaxBreakdown>
            <TaxCode>MN</TaxCode> 
            <TaxAmount Name="Billed">15.630</TaxAmount> 
        </TaxBreakdown>
    </Tax>
    <AddOnCharges>
        <AddOnChargeName>ISCAllowed</AddOnChargeName> 
        <AddOnChargePercentage>-9</AddOnChargePercentage> 
        <AddOnChargeAmount>-32.880</AddOnChargeAmount> 
    </AddOnCharges>
    <TotalNetAmount>348.130</TotalNetAmount> 
    <CouponDetails>
        <TicketOrFIMIssuingAirline>160</TicketOrFIMIssuingAirline> 
        <TicketOrFIMCouponNumber>1</TicketOrFIMCouponNumber> 
        <TicketDocOrFIMNumber>2649488544</TicketDocOrFIMNumber> 
        <CheckDigit>6</CheckDigit> 
        <CurrAdjustmentIndicator>USD</CurrAdjustmentIndicator> 
        <ElectronicTicketIndicator>E</ElectronicTicketIndicator> 
        <AirlineFlightDesignator>MR</AirlineFlightDesignator> 
        <FlightNo>885</FlightNo> 
        <FlightDate>2013-04-03</FlightDate> 
        <FromAirportCode>ULN</FromAirportCode> 
        <ToAirportCode>HKG</ToAirportCode> 
        <SettlementAuthorizationCode>861FBKOPVEZZ4</SettlementAuthorizationCode> 
        <Attachment>
            <AttachmentIndicatorOriginal>N</AttachmentIndicatorOriginal> 
        </Attachment>
    </CouponDetails>
</LineItemDetail>

上記は XML ドキュメントです。タグの値を取得する必要があります<TaxCode>

今まで私はここまでたどり着きました

var tax = from d in doc.Root.Descendants("Tax") select d;

foreach (var p in tax)
{
    taxcode= p.Element("TaxCOde").Value;
}
4

4 に答える 4

1

p.Element("TaxCOde")p( <Tax>element)の直接の子のみをチェックするため、何も検出されません。

それを試してください:

foreach (var p in tax)
{
    taxcode= (string)p.Element("TaxBreakdown").Element("TaxCode");
}

要素が見つからない場合はスローされないため、プロパティ(string)XElementの代わりに変換を使用しました。XElement.ValueNullReferenceException

編集

サンプル XML のテスト コード:

var doc = XDocument.Load("source.txt");

var lineItemDetails = doc.Descendants("LineItemDetail");

foreach (var lineItemDetail in lineItemDetails)
{
    var tax = lineItemDetail.Element("Tax");
    var taxCode = (string)tax.Element("TaxBreakdown").Element("TaxCode");
}

taxCodeですMN

于 2013-08-12T06:07:58.197 に答える
0

これを試して

 foreach (var p in tax)
 {
   taxcode= p.Element("TaxBreakdown").Element("TaxCode").Value;
 }
于 2013-08-12T06:12:38.383 に答える
-1

XmlDocument を使用してみませんか? これを行うことができるドキュメントにxmlをロードしたもの(私はXmlDocumentを次のように宣言しましたdoc):

foreach(XmlElement elem in doc.GetElementsByTagName("TaxCOde"))
     taxcode = elem.InnerText;

記憶だけで書いているので、文法や構文に誤りがありましたら申し訳ありません。

于 2013-08-12T06:24:50.067 に答える