0

私はノブの問題を抱えています。属性でノードを選択し、その子ノードの値を取得したいのですが、代わりに常に最初のノードの値を取得します。私のxml:

<Sites>
  <Site ID="032">
    <Name>
    Rome
    </Name>
    <Code>
      ---
    </Code>
    <Visible>
      true
    </Visible>
</Site>
  <Site ID="040">
    <Name>
    Paris
    </Name>
    <Code>
      ---
    </Code>
    <Visible>
      true
    </Visible>
<Site>
  <Site ID="055">
    <Name>
    Berlin
    </Name>
    <Code>
      ---
    </Code>
    <Visible>
      true
    </Visible>
</Site>
</Sites>

私のコード:

XmlDocument xSite = new XmlDocument();
xSite.Load("Data\\Site.xml");
XmlNode siteNode = xSite.SelectSingleNode("/Sites/Site[@ID='" + _selectedSite.ID + "']");
string sitenodestr = siteNode.InnerText;
_selectedSite.Code = siteNode.SelectSingleNode("//Code").InnerText.Trim();
_selectedSite.Name = siteNode.SelectSingleNode("//Name").InnerText.Trim();
string visib = siteNode.SelectSingleNode("//Visible").InnerText.Trim();
_selectedSite.Visibility = Convert.ToBoolean(visib);

確認したところ、ID は正しく、siteNode のコンテンツも正しいのですが、常に最初のサイト (この例ではローマ) の名前を取得しています。手伝って頂けますか?

4

2 に答える 2

1

要素内のコード ノードのみをターゲットにするsiteNode.SelectSingleNode("//Code")代わりに、すべてのコード ノードをターゲットにするものを記述します。siteNode.SelectSingleNode("Code")

于 2015-03-16T15:32:36.233 に答える
0

そうではないはずです

siteNode.SelectSingleNode("//Code")...

しかし

siteNode.SelectSingleNode("Code")...

これは、//CodeXpath 式が「ドキュメント内のすべての「コード」要素」を意味するためですが、必要なのは の子だけですsiteNode

リファレンスについては、 Xpath 構文の例を参照してください。

于 2015-03-16T15:25:45.527 に答える