0

xmldocumentからコストノードを取得しようとしていますが、適切なxpath式を設定する方法がわかりません。これが私のc#コードです:

XmlNode n = reportFields.SelectSingleNode(field[1].Trim());

field [1]は私のxpathであり、次の文字列です。

"    /Report/Tablix6/RowGroup_Collection/RowGroup/@Cost"

これは、reportFieldsのinnerXmlプロパティの一部です。

"<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Report Name=\"Sample\">
<Tablix6>
    <RowGroup_Collection>
        <RowGroup Cost=\"1199\" />
    </RowGroup_Collection>
</Tablix6>

何か案は?

編集:

このコードを実行した後、nはnullになります。

EDIT2:xmlDocumentの更新バージョンは次のとおりです。

<?xml version="1.0" encoding="utf-8" ?> 
<Report xsi:schemaLocation="Telephony http://serverName" 
Name="Telephony" 
Textbox1="Telephony total cost" 
Textbox6="Updated: 2010-4" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="Telephony">
<Tablix6>
    <RowGroup_Collection>
        <RowGroup CostSEK="13.908239364624" /> 
    </RowGroup_Collection>
</Tablix6>
4

4 に答える 4

1

さて、私はそれを解決することができました。名前空間を作成し、それを反映するようにXPath文字列を変更する必要がありました。

XPath:

ns:Report/ns:Tablix6/ns:RowGroup_Collection/ns:RowGroup/@CostSEK

C#:

XmlNamespaceManager namespaces = new XmlNamespaceManager(reportFields.NameTable);
namespaces.AddNamespace("ns", "Telephony");
XmlNode n = reportFields.SelectSingleNode(field[1].Trim(), namespaces);
于 2012-09-04T10:43:08.653 に答える
0

試す

XmlNode n = reportFields.SelectSingleNode("/Report/Tablix6/RowGroup_Collection/RowGroup").Attributes["Cost"];

次に、n.Valueを使用してノードの値にアクセスできるため、

Console.Writeline(n.Value);

「1199」を出力する必要があります

于 2012-09-03T10:16:53.683 に答える
0

してみてください:

object attr = reportFields.SelectSingleNode(field[1].Trim()).Value;
于 2012-09-03T10:18:07.083 に答える
-1
"//Report/Tablix6/RowGroup_Collection/RowGroup/@Cost"

誤解することもありますが、XPath式がダブルスラッシュ「//」で始まるとよいと思います。

于 2012-09-03T10:15:47.760 に答える