0
    Dim root As XElement = XElement.Load(xmlFile)
    Dim stuff =
        From item In root.Elements("abc") Select item

    Debug.Print(stuff.Count)

XMLの内容は次のとおりです。

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook
 xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
  <abc xmlns="foo">1</abc>
  <abc xmlns="foo">2</abc>
  <abc xmlns="foo">3</abc>
</Workbook>

Workbookタグの先頭にあるxmlns="urn:schemas-microsoft-com:office:spreadsheet"を削除すると、正しい結果が3になります。

ETA別の名前空間(この場合は「foo」)が埋め込まれている場合はどうすればよいですか

4

1 に答える 1

2

abc 名前空間のない名前の要素を見つけようとしています。親要素のxmlns=...一部は、子孫要素のデフォルトの名前空間を設定します。

必要なもの:

Dim ns As XNamespace = "urn:schemas-microsoft-com:office:spreadsheet"
...
Dim stuff = root.Elements(ns + "abc")

ここでクエリ式を使用しても意味がないことに注意してください。実行しているだけの場合は、代わりFrom x in y Select xに使用できますy...

于 2012-08-16T11:44:01.880 に答える