1

xpathを使用してxmlから値を読み取ろうとしています。すでにXmlNamespaceManagerを作成し、xmlファイルを使用してすべてのprefix、uriペアを追加しました。

私はxpathのセットを持っています。すべてのxpathをトラバースし、xmlから関連データを検索する必要があります。

私は以下のコードを使用しています

if (myXmlDocument.DocumentElement != null)
{
    var selectSingleNode = myXmlDocument.DocumentElement.SelectSingleNode(xPath, myNamespaceManager);
    if (selectSingleNode != null) 
        value = selectSingleNode.InnerText; 
}

私の問題は、プレフィックスがxmlでカバーされていない(したがって、namespaceManagerにプレフィックスまたは名前空間が含まれていない)xpathを渡すと、「名前空間プレフィックス'XXX'が定義されていません」という例外がスローされることです。</p>

このような予期しないxpathをスキップしたいだけです。

そのための良い解決策はありますか?

4

1 に答える 1

2

簡単な修正として、try catchを使用して、例外がXPathExceptionタイプであり、メッセージに「名前空間プレフィックス*が定義されていません」が含まれているかどうかを確認し、スキップしますが、これは本当に好きではありません。

于 2012-11-16T13:04:37.057 に答える