XPathNodeIterator を使用して要素から値を選択しようとしています。しかし、XML ファイルから期待値を取得できません。
私のXMLファイル
<?xml version="1.0" encoding="utf-8"?>
<ns0:Entity xmlns:ns0="http://schemas.mycompany.com/1.0">
<ns0:Data>
<Address_Id xmlns:ns0="http://schemas.mycompany.com/1.0">7</Address_Id>
<Customer_Id xmlns:ns0="http://schemas.mycompany.com/1.0">67</Customer_Id>
<CustomerName xmlns:ns0="http://schemas.mycompany.com/1.0">My Customer 1</CustomerName>
</ns0:Data>
</ns0:Entity>
値を取得するためのメソッド
2 つのメソッドを作成しましたが、どちらも必要な値を返しません。
private static string GetValue_Attempt1(XPathDocument xPathDocument, string xpathExpression)
{
var xpathNavigator = xPathDocument.CreateNavigator();
var xpathNodeIterator = xpathNavigator.Select(xpathExpression);
xpathNodeIterator.MoveNext();
return xpathNodeIterator.Current.Value;
}
private static string GetValue_Attempt2(XPathDocument xPathDocument, string xpathExpression)
{
var xpathNavigator = xPathDocument.CreateNavigator();
var xpathNodeIterator = xpathNavigator.Select(xpathExpression);
xpathNodeIterator.MoveNext();
var nodesNavigator = xpathNodeIterator.Current;
var nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);
nodesText.MoveNext();
return nodesText.Current.Value;
}
私のXPath
- Address_Id を取得
- XPath:
//Data/Address_Id/text()
- 試行 1 の戻り値:
767My Customer 1
。すべての値が連結されるのはなぜですか??? - Attempt2 の戻り値:
7
。良さそう
- XPath:
- Customer_Id を取得
- XPath:
//Data/Customer_Id/text()
- 試行 1 の戻り値:
767My Customer 1
。すべての値が連結されるのはなぜですか??? - Attempt2 の戻り値:
7
。Address_Id を取得するのはなぜですか??
- XPath:
質問
間違った XPath を使用している可能性があります。しかし、結果もわかりません。何が起こっているのかを理解するために。私が知りたいのですが:
- 要素の値を取得するためのより良い方法 (メソッド) はありますか?
- 使用する必要がある XPath 文字列は何ですか?
GetValue_Attempt1
メソッドが連結された文字列を返すのはなぜですか?GetValue_Attempt2
メソッドが最初の要素のみの値を返すのはなぜですか?