Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQtoXML和数组创建XML_C#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 使用LINQtoXML和数组创建XML

C# 使用LINQtoXML和数组创建XML,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我使用LINQtoXML创建发送给第三方的XML。当我想在XML中发送的部分信息是动态的时,我很难理解如何使用Linq创建XML XML的动态部分作为字符串[,]数组保存。这个多维数组包含2个值 我可以使用stringbuilder“构建”动态XML,并将数组中的值存储到字符串变量中,但当我尝试将此变量包含到Linq中时,该变量是HTMLEncoded的,而不是作为正确的XML包含 如何将动态构建的字符串添加到由Linq构建的XML中 例如: //string below contains va

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

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

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

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

例如:

//string below contains values passed into my class
选择字符串[,]附件

//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 ;
废话
<;标签>&书信电报;InnerTag>;选项1=“valuefromarray0”选项2=“valuefromarray1”/>&书信电报;标签/>;
我想退回一些东西:

<MainTag> blah blah </MainTag>
<Tag><InnerTag option1="valuefromarray0" option2="valuefromarray1" /></Tag>
<Tag><InnerTag option1="valuefromarray0" option2="valuefromarray1" /></Tag>
废话
有什么想法或建议吗?我可以使用XmlDocument实现这一点,但如果可能的话,我希望使用Linq实现这一点

谢谢你的帮助,
Rich

使用(“名称”、“值”)构造函数构建XElements将使用值文本作为文字文本,并在必要时对其进行转义以实现此目的

如果您想从一段XML文本以编程方式创建XElement,而该XML文本实际上要被解释为XML,那么应该使用
XElement.Load()
。这将把字符串解析为实际的XML,而不是试图将字符串的文本指定为转义的文本值

试试这个:

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

就这样!我不会让自己难堪的,我会说,为了让它工作,我已经在这上面混了多久了哈哈!谢谢:)你为什么使用
StringReader
?仅仅这样做是错误的吗<代码>XElement.Load(附件XML)