Я новичок в 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"
Любая помощь будет очень полезна.
Заранее спасибо!