我正在使用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>
< ;Tag> ;< ;InnerTag> ; option1="valuefromarray0" option2="valuefromarray1" /> ;< ;Tag/> ;
我想回复一下这个:
<MainTag> blah blah </MainTag>
<Tag><InnerTag option1="valuefromarray0" option2="valuefromarray1" /></Tag>
<Tag><InnerTag option1="valuefromarray0" option2="valuefromarray1" /></Tag>
有什么想法或建议吗?我可以使用XmlDocument来解决这个问题,但如果可能的话,我想让它与Linq一起工作。
感谢您的帮助, 富
答案 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)));