2010-12-11 2 views
1

следующие строки работают нормально и записывают правильные значения в XML-файл.Недопустимый символ атрибута xml docfrag innerxmll

Проблема заключается в попытке изменить первый тег. Он продолжает говорить: «<», шестнадцатеричное значение 0x3C, является недопустимым символом атрибута ».

Что я имею атм:

<Question type =""> 
<QuestionName>test</QuestionName> 
</Question type> 

<Question type =""> 
<QuestionName>test</QuestionName> 
</Question type> 

Но я хотел бы это точно наоборот: (это где происходит ошибка пытается добиться этого)

<QuestionName> 
    <Question type =""></Question type> 
</QuestionName> 

<QuestionName> 
    <Question type =""></Question type> 
</QuestionName> 

Ниже код работает, но только для первого примера.

docFrag.InnerXml = "<Question type=\"" + lblQuestion.SelectedValue + "\">" + 
      "<QuestionName>" + txtQuestionName.Text + "</QuestionName>" + 
      "</Question>"; 

ответ

0

Конечные теги должны опустить атрибут - это просто

</Question> 

Также; построение XML через конкатенацию подвержено устранению ошибок; Я хотел бы использовать LINQ к XML здесь:

string s = new XElement("QuestionName", 
    new XElement("Question", 
    new XAttribute("type", "foo"), 
    "bar" 
) 
).ToString(); 
+0

Он продолжает говорить, что конструктору нужно больше аргументов, не совсем уверен, как с этим справиться. Никогда раньше LINQ не использовал. С уважением – Tonz

+0

@Tonz - компилирует и запускает «как есть» для меня ...? –

0

То, что я вижу здесь, вы пытаетесь использовать XmlDocument класс, чтобы прочитать данный XML. Он не будет работать с свободным xml. Он нуждается в надлежащем xml с объявлением root и объявлением xml. Чтобы работать со свободным xml, используйте Linq для Xml.

+0

Вышеприведенный код - всего лишь фрагмент всего кода, я просто хочу, чтобы заказ переключился. Он пишет xml с ввода, который я даю на своем веб-сайте. – Tonz

Смежные вопросы