Имя тега XML перезаписывается определенным типом - PullRequest
0 голосов
/ 24 марта 2009

Мы общаемся со сторонней службой, используя XML-файл на основе стандартов, разработанных этой третьей стороной. Они дают нам шаблон XML для каждой «транзакции», и мы считываем его в DataSet с использованием System.Data.DataSet.ReadXML, устанавливаем правильные значения в DataSet, а затем записываем XML обратно, используя System.Data.DataSet.WriteXML. Этот процесс работал для нескольких разных файлов. Однако сейчас я добавляю дополнительный файл, который требует, чтобы в одном из полей был установлен целочисленный тип данных. Вот уменьшенная версия:

<EngineDocList>
    <DocVersion>1.0</DocVersion>
    <EngineDoc>
        <MyData>
            <FieldA></FieldA>
            <FieldB></FieldB>
            <ClientID DataType="S32"></ClientID>
        </MyData>
    </EngineDoc>
</EngineDocList>

Когда я смотрю на DataSet, созданный моим вызовом ReadXML для этого файла, таблица MyData имеет столбцы FieldA, FieldB и MyData_ID. Если я затем установлю значение MyData_ID, а затем сделаю вызов WriteXML, экспорт XML не имеет значения для ClientID. Еще раз, если я возьму способ DataType, то у меня действительно есть столбец ClientID, я могу установить его правильно, и экспортированный XML имеет правильное значение. Однако третье лицо требует, чтобы этот тип данных был определен.

Любые мысли о том, почему ReadXML будет переименовывать этот тег или как я мог иначе заставить этот процесс работать? В качестве альтернативы, я мог бы изменить способ, которым мы читаем и пишем XML, но, очевидно, предпочел бы не идти по этому пути, хотя эти предложения также будут приветствоваться. Спасибо.

1 Ответ

2 голосов
/ 24 марта 2009

Я бы не стал делать это с DataSet. Особое внимание уделяется моделированию реляционной модели. Большая часть XML не будет следовать этой модели. Когда DataSet видит вещи, которые не соответствуют его представлению о мире, он либо игнорирует их, либо изменяет их Ни в том, ни в другом случае это хорошо.

Я бы использовал для этого XmlDocument.

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