0

C# の sidのリストで属性を交換する際に、いくつかの困難に直面しています。は参考です。ItemXDocumentid

入力:

<Items>
    <Item base="book_bookref1_ref1">
        <Name>Test1</Name>
        <Ref>bookref1</Ref>
    </Item>
    <Item base="book_bookref1_ref2">
        <Name>Test2</Name>
        <Ref>bookref1</Ref>
    </Item>
    <Item base="book_bookref2_ref1">
        <Name>Test3</Name>
        <Ref>bookref2</Ref>
    </Item>
    <Item base="book_bookref2_ref2">
        <Name>Test4</Name>
        <Ref>bookref2</Ref>
    </Item>
</Items>

期待される出力:

<Items>
    <Item base="book_bookref1_ref1" id="book_bookref1_ref2">
        <Name>Test1</Name>
        <Ref>bookref1</Ref>
    </Item>
    <Item base="book_bookref1_ref2" id="book_bookref1_ref1">
        <Name>Test2</Name>
        <Ref>bookref1</Ref>
    </Item>
    <Item base="book_bookref2_ref1" id="book_bookref2_ref2">
        <Name>Test3</Name>
        <Ref>bookref2</Ref>
    </Item>
    <Item base="book_bookref2_ref2" id="bookref2_ref1">
        <Name>Test4</Name>
        <Ref>bookref2</Ref>
    </Item>
</Items>

1st と 2ndBase属性<Ref>の値の一部がex:bookref1参照になっているタグがあります。book_bookref1_ref1 Item

2 番目の 'id' を 1 番目Itemに書き込み、1 番目idを 2番目に書き込む必要がありItemます。3 番目と 4 番目も同様ですItem。多くの場合がありますが、組み合わせのようなものです (1 と 2、3 と 4、5 と 6 など)。

ここでの問題は、複数の が存在する可能性があり、 に属性をマップするItem関係がないことです。ItemId

私が使用しているコードは、LINQ で sを取得するために読み込まXMLDocumentれています。XDocumentItem

Var doc = XDocument.Load(xml) 
var ItemsList 
foreach(var itm in ItemsList)
{
    // I'm stuck here. How do we get the id attribute value based on Ref tag?
}

あなたの提案を教えてください。

4

1 に答える 1