使用Linq to XML和数组创建XML

3

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

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

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

我该如何将我动态构建的字符串添加到由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>
&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来实现它。
感谢您的帮助, Rich
1个回答

3

使用 ("name", "value") 构造函数创建 XElements 将使用该值文本作为字面文本 - 并在必要时对其进行转义。

如果您想从 XML 文本片段编程创建 XElement,并希望该文本实际被解释为 XML,则应使用 XElement.Load()。这将解析字符串作为实际的 XML,而不是将字符串的文本分配为已转义的字面值。

尝试一下:

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

就是这样了!我不会让自己尴尬地说我为了让它工作而折腾了多久,哈哈!谢谢 :) - Richard Reddy
你为什么使用了 StringReader?直接这样做有问题吗?XElement.Load(AccessoriesXML) - B Faley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接