2009-08-10 12 views
3

Linq To XMLを使用して、第三者に送信されるXMLを作成しています。私は、XMLで送信したい情報の一部が動的になるときに、Linqを使ってXMLを作成する方法を理解するのが難しいです。Linq to XMLと配列を使用してXMLを作成する

XMLの動的部分は、文字列[、]配列として保持されます。この多次元配列は2つの値を保持します。

私はstringbuilderを使用して動的XMLをビルドし、配列内の値を文字列変数に格納できますが、この変数をLinqに含めると、変数は適切なXMLとして組み込まれるのではなくHTMLEncodedになります。

Linqが構築しているXMLに動的に作成された文字列を追加するにはどうすればよいですか?例について

//string below contains values passed into my class 

列[、] AccessoriesSelected。

//I loop through the above array and build up my 'Tag' and store in string called AccessoriesXML 


//simple linq to xml example with my AccessoriesXML value passed into it 
XDocument RequestDoc = new XDocument(
new XElement("MainTag", 
new XAttribute("Innervalue", "2") 
), 
AccessoriesXML); 

「タグ」それは私のXML複数回表示されることがありますか、それはないかもしれませんが、オプションの余分である - それはいくつかのチェックボックスをチェックし、ユーザーに依存します。

今、私は自分のコードを実行したとき、私はこれを参照してください。

<MainTag> blah blah </MainTag> 
<Tag><InnerTag option1="valuefromarray0" option2="valuefromarray1" /></Tag> 
<Tag><InnerTag option1="valuefromarray0" option2="valuefromarray1" /></Tag> 

任意の考えや提案:

<MainTag> blah blah </MainTag> 
&lt ;Tag&gt ;&lt ;InnerTag&gt ; option1="valuefromarray0" option2="valuefromarray1" /&gt ;&lt ;Tag/&gt ; 

を私はこの何かを返すようにしたいですか?私はXmlDocumentを使用してこれを得ることができますが、可能ならLinqでこれを動作させたいと思います。あなたの助けのための

おかげで、(「名前」、「値」)と リッチ

答えて

3

建物XElementsコンストラクタはリテラルテキストとして値のテキストを使用します - そして、必要であればそれを達成するために、それを逃れます。

実際にXMLとして解釈されるXMLテキストのスニペットからプログラムでXElementを作成する場合は、XElement.Load()を使用する必要があります。これは、文字列のテキストをエスケープされたリテラル値として代入しようとする代わりに、実際のXMLとして文字列を解析します。それがあったことを

XDocument RequestDoc = new XDocument(
new XElement("MainTag", 
new XAttribute("Innervalue", "2") 
), 
XElement.Load(new StringReader(AccessoriesXML))); 
+0

はこれを試してみてください!私はそれをハハに働かせるためにこれをどうやって使いこなしているのかを言って自分を困らせません!ありがとう:) –

+0

なぜあなたは 'StringReader'を使用しましたか?単にこれをするのは間違っていますか? 'XElement.Load(AccessoriesXML)' – Meysam

関連する問題