1

テーブルにxmlフィールドがあり、テーブルはこれと同じです:

id | xml |

いいえ、これと同じレコードがあります:

 <dfs>

 <field mainType="text" id="cce267e046a57c1"></field>
 <field mainType="text" id="1b2490d1b11967c1"></field>
 <moduleFields mainType="module" many="true" moduleId="5" id="4a191594ec2c8723">
 <items>
   <field mainType="text" id="4a191594ec2c8723_1_56e5290262cd1eef"></field>
   <field mainType="text" id="4a191594ec2c8723_1_f311896a52011eef"></field>
   <field mainType="text" id="4a191594ec2c8723_1_e68f6673b9c79eef">1</field>
 </items>
 <items>
   <field mainType="text" id="4a191594ec2c8723_2_56e5290262cd1eef"></field>
   <field mainType="text" id="4a191594ec2c8723_2_f311896a52011eef">2</field>
   <field mainType="text" id="4a191594ec2c8723_2_e68f6673b9c79eef">2</field>
 </items>
 <items>
   <field mainType="text" id="4a191594ec2c8723_3_56e5290262cd1eef">3</field>
   <field mainType="text" id="4a191594ec2c8723_3_f311896a52011eef">3</field>
   <field mainType="text" id="4a191594ec2c8723_3_e68f6673b9c79eef">3</field>
 </items>
 </moduleFields>
 </dfs>

moduleFields サブタグを取得するにはどうすればよいですか?

xml または xquery への linq はありますか?

4

2 に答える 2

0

moduleFields要素のみを持ち、その属性を反復する場合は、 XmlDocumentSelectSingleNodeを使用できます。

//xmFieldがdbfieldからのxmlを保持する文字列であると想定します。

var xdoc = new XmlDocument();
xdoc.Load(new StringReader(xmlField));
var module = xdoc.SelectSingleNode("/dfs/moduleFields");
if (module!=null) 
{
    Debug.WriteLine("value:" + module.Value);
    foreach(var attr in module.Attributes)
    {
        Debug.WriteLine(attr.Name + "=" + attr.Value);
    }
}
else
{
  Debug.WriteLine("modulefields not found!");
}
于 2012-10-07T12:40:41.720 に答える
0

次のクエリを使用します

/*/moduleFields

moduleFieldsこれにより、XML ドキュメントの最上位要素の子である任意の要素が選択されます。

XML ドキュメントの最上位要素の子である要素が複数ありmoduleFields、そのような最初の要素のみを取得する必要がある場合はmoduleFields、次を使用します

/*/moduleFields[1]
于 2012-10-07T14:45:39.943 に答える