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 子标签?

linq 到 xml 还是 xquery 呢?

4

2 回答 2

0

如果您只想拥有 moduleFields 元素然后迭代其属性,则可以使用XmlDocumentSlectSingleNode

// 假设 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 文档顶部元素的子元素的任何元素。

如果有多个moduleFields元素是 XML 文档顶部元素的子元素,并且您只需要获取第一个这样的moduleFields元素,则使用

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