使用Linq to XML和数组创建XML

时间:2009-08-10 17:06:28

标签: c# xml linq linq-to-xml

我正在使用Linq To XML创建发送给第三方的XML。当我想在XML中发送的部分信息是动态的时,我很难理解如何使用Linq创建XML。

XML的动态部分保存为字符串[,]数组。这个多维数组包含2个值。

我可以使用stringbuilder“构建”动态XML,并将数组中的值存储到字符串变量中,但是当我尝试将此变量包含到Linq中时,变量是HTMLEncoded而不是作为正确的XML包含。 / p>

我如何将动态构建的字符串添加到由Linq构建的XML中?

例如:

//string below contains values passed into my class

string [,] 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);

'Tag'是一个可选的附加功能,它可能会多次出现在我的XML中,也可能不会出现 - 它取决于用户检查一些复选框。

现在,当我运行我的代码时,我看到了这一点:

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

我想回复一下这个:

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

有什么想法或建议吗?我可以使用XmlDocument来解决这个问题,但如果可能的话,我想让它与Linq一起工作。

感谢您的帮助, 富

1 个答案:

答案 0 :(得分:3)

使用(“name”,“value”)构造函数构建XElements将使用值文本作为文本文本 - 并在必要时将其转义以实现此目的。

如果要以想要实际解释为XML的XML文本片段以编程方式创建XElement,则应使用XElement.Load()。这会将字符串解析为实际的XML,而不是尝试将字符串的文本指定为转义的文字值。

试试这个:

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