2

以下のxmlからsitename要素の値を取得する方法は?

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:63630/Service.svc</To>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IService/GetDemographic</Action>
  </s:Header>
  <s:Body>
    <GetDemographic xmlns="http://tempuri.org/">
      <userIdentifier>first value</userIdentifier>
      <sitename>second value</sitename>
      <demographicName>third value</demographicName>
    </GetDemographic>
  </s:Body>
</s:Envelope>

私が試した以下のコードはnullを返しました:

var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(myXml);
var result = xmlDocument.SelectNodes("//sitename");

問題は Xml 名前空間ですか? sitename 要素には名前空間が割り当てられていないため、名前空間の値に関係なく検索できますか?

私は正常に動作する以下のコードを見つけました:

xmlDocument.SelectNodes("//*[local-name()='sitename']");

大文字と小文字を区別しないようにする方法は?

4

2 に答える 2

0

それらのリンクを見てみてください;)

大文字と小文字を区別しない .NET の XPath: http://blogs.msdn.com/shjin/archive/2005/07/22/442025.aspx

XPath を使用して MSXML で大文字と小文字を区別しない検索を実行する: http://support.microsoft.com/kb/315719

例えば ​​:

XMLDoc.SelectNodes("Cars/car[contains(.,'Protan')]")

上記の選択の結果は、この選択の結果と等しくなければなりません

XMLDoc.SelectNodes("Cars/car[contains(.,'protan')]")'
于 2013-03-26T14:46:15.363 に答える
0

同様の問題がありました。名前空間マネージャーを使用して名前空間を追加することで解決できました。

同様の Q/A があります: ( Using Xpath With Default Namespace in C# )

それが役立つことを願っています。

于 2013-03-26T21:53:17.750 に答える