1

私はこれに似たxmlで作業しています:

<?xml version="1.0" encoding="utf-8"?>
<Results>
  <Pattern Name="Substitution">
    <TestList>
      <Test>
        <Inputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Inputs>
        <Outputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Outputs>
      </Test>
      <Test>
        <Inputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Inputs>
        <Outputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Outputs>
      </Test>
    </TestList>
  </Pattern>
  <Pattern Name="MinMax">
    <TestList>
      <Test>
        <Inputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Inputs>
        <Outputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Outputs>
      </Test>
      <Test>
        <Inputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Inputs>
        <Outputs>
          <Variable Name="A" Value="-1" />
          <Variable Name="B" Value="20" />
        </Outputs>
      </Test>
    </TestList>
  </Pattern>
</Results>

linq と Excel の相互運用機能を使用して、テストの値を Excel ワークシートに書き込んでいます。

var tests = from test in document.Descendants("Test").Descendants("Inputs")
            select new
            {
                inputNames = test.Elements("Variable").Attributes("Name")
            };

foreach (var test in tests)
{
    valueRow = valueMatch.Row;

    foreach (var inputName in test.inputNames)
    {
        if (valueSection.Find(inputName.Value, Missing.Value, Missing.Value, XlLookAt.xlWhole) != null)
        {
             workSheetTwo.Cells[valueRow, valueColumn] = inputName.NextAttribute.Value;                       
             ++valueRow;
        }
    }

    ++valueColumn;
}

Excelワークシートへの値の書き込みは正常に機能していますが、下にあるパターン名に基づいて異なるセルの背景色で値を書き込む必要もあります..(たとえば、パターン名="置換"の場合は青、パターン名=の場合は黄色) "最小最大")。「inputName」からパターン名の値を取得することはできますか? 私はinputName.Parent.Element("Pattern").Attribute("Name").Value..を使用してみましたが、これは例外を返します。これを行う正しい方法は何ですか?どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

1

Element("Pattern")こんな風に電話する代わりに、あなたは近くにいAncestors("Pattern").First()ました...

inputName.Parent.Ancestors("Pattern").First().Attribute("Name").Value
于 2013-05-31T06:18:07.163 に答える
0
var tests = from p in xdoc.Descendants("Pattern")
            from input in p.Descendants("Test").Elements("Inputs")
            select new {
                Pattern = p.Attribute("Name").Value,
                Variables = input.Elements("Variable").Attributes("Name") };
于 2013-05-31T07:31:26.800 に答える