【问题标题】:Create XML using Linq to XML and arrays使用 Linq to XML 和数组创建 XML
【发布时间】:2010-11-18 08:50:07
【问题描述】:

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

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

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

我将如何将动态构建的字符串添加到由 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 来完成这项工作。

感谢您的帮助, 丰富

【问题讨论】:

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


    【解决方案1】:

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

    如果您想以编程方式从您希望实际解释为 XML 的 XML 文本的 sn-p 创建 XElement,您应该使用XElement.Load()。这会将字符串解析为实际的 XML,而不是尝试将字符串的文本分配为转义的文字值。

    试试这个:

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

    【讨论】:

    • 就是这样!我不会说我已经搞砸了多久才能让它工作哈哈!谢谢:)
    • 你为什么用StringReader?简单地这样做有错吗? XElement.Load(AccessoriesXML)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多