C #, типизированный столбец XML: как читать / устанавливать значения? - PullRequest
1 голос
/ 11 июля 2011

Я новичок в XML и мне нужна помощь, чтобы вернуться на правильный путь.

У меня есть следующий код xsd, где у меня есть эти два элемента xsd:

...
<xsd:element name="DataCollection">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Data" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Question" minOccurs="0" type="xsd:string" />
                            <xsd:element name="Input" minOccurs="0" type="xsd:string" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
...

Эта схема xsd назначена столбцу БД типа XML.
Допустим, таблица называется «A» (в моем коде C #)
в то время как типизированный столбец XML называется «XML_B».

Структура сущностей используется для доступа к БД.

Вопросы новичка: Я думаю, что могу прочитать так:

string test = A.DataCollection.Data.FirstOrDefault(row => row.Input == "Hello world?").Question;

Это даст мне первую (или по умолчанию) запись в БД / значение поля «Вопрос» где в поле XML «Input» содержится именно «Hello world?».

Но, к сожалению, вызывает чтение, попробуйте ошибку типа «Объект не задан для экземпляра», потому что «... Данные» равно нулю, и это вообще не решает проблему:

...
if (A.DataCollection.Data == null)
     A.DataCollection.Data = new DataCollectionData[1];
...

А как мне записать значения для "Вопрос" и "Ввод"?

A.DataCollection.Data.SetValue("Test value for field 'Question'", 0);   // Index 0 = XML field "Question"
A.DataCollection.Data.SetValue("Test value for field 'Input'", 1);      // Index 1 = XML field "Input"

Любая помощь будет очень полезна.

Заранее спасибо!

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