2

我只想知道从 readXML 生成的表是什么样子的,比如 xml 文件是否如下所示:

<item attr="some attribute">
<descirption>anything</description>
</item>

我可以通过 Tables 集合直接引用表,如下所示:

ds.ReadXml(xml);
... ds.Tables[i]

然后我可以使用 rows 集合访问行和列:

ds.Tables[3].Rows[i].ItemArray(j);

但是如何访问任何 xml 节点的“属性”?

4

1 回答 1

0

它在行中。我稍微修复了你的 xml :)

var xml = "<item attr=\"some attribute\"><description>anything</description></item>";
var ds = new DataSet();

ds.ReadXml( new StringReader( xml ), XmlReadMode.Auto );

var ia = ds.Tables[0].Rows[0].ItemArray;
var att = ia[1]; // att == "some attribute"

如果您没有架构,则可能必须检查该列以确定它是什么。

每条评论:您会看到我让它推断架构 (XmlReadMode.Auto)。它将根节点下的元素作为 Rows,然后按顺序添加属性,然后添加元素中的值。因此,例如以下 XML ...

var xml = "<items>
             <item attr1='attr1' attr2='attr2'>
                 <description>desc1</description>
             </item>
             <item attr1='attr3' attr2='attr4'>
                 <description>desc2</description></item>
           </items>";

我将得到两行(每个项目一个),其中包含 attr1、attr2 和描述的列。您可以使用模式更改它解释 XML 的方式。

于 2009-05-24T22:10:49.750 回答