-1

以下のxml結果を生成するオラクルクエリがあり、SUBQUERYおよびCOL_LIST_ITEMノード内に属性値があるかどうかのみ確認したい。ノードが属性値を持っている場合は、「属性値を持っている」と書き、それ以外の場合は「属性値なし」と書きます。コードが正しいかどうかわからない! それを行う方法はありますか?

<VIEW xmlns="http://xmlns.oracle.com/ku" version="1.0">
    <SCHEMA value1="USER1">USER2</SCHEMA> 
    <NAME value1="VIEW_TBL_A">VIEW_TBL_B</NAME> 
    <COL_LIST> 
        <COL_LIST_ITEM> 
        </COL_LIST_ITEM> 
        <COL_LIST_ITEM src="2"> 
            <NAME>FIELD_A2</NAME> 
        </COL_LIST_ITEM> 
    </COL_LIST> 
    <SUBQUERY value1="SELECT FIELD_A1 
    FROM TBL_A 
    WHERE FIELD_A1 = 111">SELECT FIELD_A1, FIELD_A2 
    FROM TBL_A 
    WHERE FIELD_A1 = 111</SUBQUERY> 
</VIEW>

これが私のコードです

using (OracleConnection conn1 = new OracleConnection(oradb1))
{
    conn1.Open();
    using (OracleCommand crtCommand = new OracleCommand("SELECT dbms_metadata.get_sxml('VIEW','VIEW_TBL_A') FROM dual;", conn1))
    {
        XmlDocument xml = new XmlDocument();
        xml.LoadXml(crtCommand.ExecuteScalar().ToString());
    }
}
4

3 に答える 3

0

XDocumentはどうですか

XDocument doc = XDocument.Parse(crtCommand.ExecuteScalar().ToString());
XNamespace ns = "http://xmlns.oracle.com/ku";

if (doc.Descendants(ns + "COL_LIST_ITEM").Any(c => c.Attributes().Any()))
    Console.WriteLine("COL_LIST has value");

もちろん、他のノードを追加してチェックします

于 2013-08-07T20:36:12.697 に答える
0

また、ユニバーサル Windows アプリで作業しているときに同様の問題に遭遇し、VS が問題の内容を明確に指定していないことに非常に不満を感じていました。何時間もウェブをサーフィンした後、私は解決策を見つけました。単純でしたが、なぜVSがそれを指定しなかったのかわかりません。とにかく、ここにあります:-

プロジェクトに別の参照を追加します:- System.Linq; を使用。 System.Xml.Linqを使用する以外に;

using System.Linq;
using System.Xml.Linq;

エラーが発生し、プロジェクトがビルドされます。


詳細については、この記事を参照してください:-

System.Xml.Linq への参照を使用する際の問題

于 2015-02-14T08:53:31.600 に答える
0

XML ドキュメントを照会するには、LINQ to XML を使用する必要があります。

XDocument document = XDocument.Load(xmlFile);

IEnumerable<XElement> elements =
    from element in document.Root.Elements("SUBQUERY")
    where element.HasAttributes
    select element;

詳しくはこちらの記事をご覧ください。

于 2013-08-07T20:41:43.840 に答える