Чтение файла XMl в массив строк - PullRequest
0 голосов
/ 13 февраля 2009

У меня есть XML-файл, и я хочу прочитать данные и присвоить их строковому массиву, поэтому для Operative будет назначен один массив, а для JobLocation - другой

<Demo>
    <JOBOperatives>
    <Operative>
        <Clock>aaaa</Clock>
        <Name>aaaaa</Name>
        <MobileNumber>00000000010</MobileNumber>
        <OperativeTrade>3</OperativeTrade>
        <OperativeTicket>1</OperativeTicket>
    </Operative>
    </JOBOperatives>
    <JobLocation>
        <UPRN>aaa</UPRN>
        <Address1>aaaa</Address1>
        <Address2>aaaa</Address2>
        <Address3>aaaa</Address3>
        <Address4>aaa</Address4>
        <Address5>aa</Address5>
        <PostCode>JR4 4ED</PostCode>
    </JobLocation>

Ответы [ 2 ]

1 голос
/ 13 февраля 2009

Я так понимаю, вы имеете в виду, где каждое свойство из XML является своим собственным элементом в массиве?

Это не похоже на очень хорошую структуру данных, особенно потому, что определения схемы XML позволяют элементам поступать в любом порядке; Ваши ожидаемые индексы могут быть испорчены. Сильно типизированный объект кажется более подходящим и хорошо поддерживается в .Net. По крайней мере, вы должны использовать словарь, чтобы ключи были сохранены.

В этом случае количество элементов в каждом дереве очень мало, и вы можете получить множество из них, поэтому словарь, вероятно, не лучший выбор. Вы могли бы делать объекты, но это было бы много лишнего кода просто для его настройки, и у меня сложилось впечатление, что xml может исходить из разных источников и отличаться в зависимости от источника (или что-то , где структура может регулярно меняться, отсюда и первоначальное желание свободно проверенного подтверждения).

В конечном итоге ваш пункт назначения - база данных, поэтому я думаю, что в этом случае я покажу вам пример использования набора данных:

string xml = GetXmlString(); // <Demo><JobOperatives><Operative><Clock>aaaa</Clock>...
StringReader sr = new StringReader(xml);
DataSet ds = new DataSet();
ds.ReadXml(sr);

Поэкспериментируйте с этим: посмотрите коллекцию .Tables набора данных, свойства .TableName каждой таблицы, коллекцию .Columns и коллекцию .Rows, а также свойства .ColumnName и .DataType каждого столбца.

0 голосов
/ 13 февраля 2009

Здесь вам может помочь свойство OuterXml класса XmlNode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...