Как я могу прочитать атрибут XML, используя readXML? как dataset.readxml перевести в таблицы? - PullRequest
2 голосов
/ 25 мая 2009

Я просто хочу знать, как выглядит таблица, полученная из readXML, скажем, если XML-файл выглядит так:

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

Я могу ссылаться на таблицы напрямую с помощью коллекции таблиц следующим образом:

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

тогда я могу получить доступ к строкам и столбцам, используя коллекцию строк:

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

но как я могу получить доступ к "атрибуту" любого узла xml?

1 Ответ

0 голосов
/ 25 мая 2009

Это в ряд. Я немного исправил ваш 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). Он принимает элементы под корневым узлом в виде строк, затем добавляет атрибуты по порядку, а затем значение в элементе. Так, например, следующий 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 и description. Вы можете изменить способ интерпретации XML с помощью схемы.

...