我想将List转换为c#中的xml文档。
我的代码如下:
List<string> BugWSResponseList1 = new List<string>();
Logger.Write("\n\n" + DateTime.Now + " : " + " : START : Creation of a set of Bugs via bug.Add API");
BugWSResponseList1 = CreateBugs(FilePath_EXPRESS_API_BugAdd_CreateBugs_DataFile);
Logger.Write("\n\n" + DateTime.Now + " : " + " : END : Creation of a set of Bugs via bug.Add API");
我一直在尝试将列表响应转换为字符串,然后尝试将其转换为xml文档,但是当我解析它时,它表明xml中有多个根元素。
xml的格式如下:
<Bug>
<family>ESG</family>
<product>Dr.Watson</product>
<version>Xpress API</version>
<productarea>1</productarea>
<subarea></subarea>
<qe>sdawar</qe>
<duplicateId></duplicateId>
</Bug>
<Bug>
<family>TEST22</family>
<product>Dr.Watson</product>
<version>Xpress API</version>
<productarea>1</productarea>
<subarea></subarea>
<qe>sdawar</qe>
<duplicateId></duplicateId>
</Bug>
请注意,它在xml中有两个不同的节点。 我到目前为止所做的是将List BugWSResponseList1转换为字符串,然后将其加载为xml.here是我正在做的代码:
XmlDocument xd = new XmlDocument();
string s = string.Join(",", BugWSResponseList2);
xd.LoadXml(s);
但是当我这样做时,它说xml中有多个根元素。
我想将List BugWSResponseList1转换为xml文档,因为我需要进一步解析它以执行代码。 任何帮助,将不胜感激。 感谢
答案 0 :(得分:3)
您可以使用XElement或XDocument和LINQ。提供XML应该是什么样子的样本我们可以提供更多信息。
例如:
BugWSResponseList1.Add("<Bug><family>TEST22</family><product>Dr.Watson</product><version>Xpress API</version><productarea>1</productarea><subarea></subarea><qe>sdawar</qe><duplicateId></duplicateId></Bug>");
BugWSResponseList1.Add("<Bug><family>ESG</family><product>Dr.Watson</product><version>Xpress API</version><productarea>1</productarea><subarea></subarea><qe>sdawar</qe><duplicateId></duplicateId></Bug>");
XElement xe = new XElement
(
"Bugs",
BugWSResponseList1
.Select
(
x=>
XElement.Parse(x)
)
);
因此,在我使用您提供的两个xml加载列表后,我执行以下操作:
我创建了一个新的XElement,它将保存XML的根目录。我将该根命名为Bugs
。然后作为该根的子项,我将List的内容解析为XElement对象之后。
以上代码将导致:
<Bugs>
<Bug>
<family>TEST22</family>
<product>Dr.Watson</product>
<version>Xpress API</version>
<productarea>1</productarea>
<subarea></subarea>
<qe>sdawar</qe>
<duplicateId></duplicateId>
</Bug>
<Bug>
<family>ESG</family>
<product>Dr.Watson</product>
<version>Xpress API</version>
<productarea>1</productarea>
<subarea></subarea>
<qe>sdawar</qe>
<duplicateId></duplicateId>
</Bug>
</Bugs>
你缺少的是根元素。 XmlDocument需要定义一个根元素。
在你的情况下,你可以通过添加你加入的字符串的开头来加入你的代码,最后,如下所示,但我认为我的解决方案更强大。
XmlDocument xd = new XmlDocument();
string s = "<Bugs>" + string.Join(",", BugWSResponseList2) + "</Bugs>";
xd.LoadXml(s);
答案 1 :(得分:1)