2010-12-11 4 views
1

les lignes suivantes fonctionnent très bien et ils écrivent les valeurs appropriées dans un fichier xml.invalide attribut caractère xml docfrag innerxmll

Le problème est d'essayer de changer la première étiquette. Il ne cesse de dire "<", la valeur hexadécimale 0x3C, est un caractère d'attribut invalide. "

Ce que je atm:

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

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

Mais je veux exactement inversée: (c'est là l'erreur se produit en essayant d'y parvenir)

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

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

Ci-dessous le code fonctionne mais seulement pour le premier exemple.

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

Répondre

0

Vos mots-clés finaux doivent omettent l'attribut - il est juste

</Question> 

aussi; la construction XML par concaténation est sujette à l'échappement de bogues; J'utiliser LINQ à XMl ici:

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

Il ne cesse de dire que le constructeur a besoin de plus d'arguments, pas vraiment sûr de savoir comment le résoudre. Je n'ai jamais utilisé LINQ auparavant. Salutations – Tonz

+0

@Tonz - qui compile et fonctionne "tel quel" pour moi ...? –

0

Ce que je vois ici est que vous essayez d'utiliser XmlDocument classe pour lire XML donné. Cela ne fonctionnera pas avec xml lâche. Il a besoin d'un XML approprié avec la racine et la déclaration XML. Pour utiliser un fichier xml lâche, utilisez Linq to Xml.

+0

Le code ci-dessus est juste un fragment du code total, je veux juste l'ordre commuté. Il écrit le xml de l'entrée que je donne sur mon site Web. – Tonz