在R语言中将API返回的XML文本写入XML文件的技术问询
解决方案
在.NET里处理这类需求,完全不用手动写死XML结构,直接用System.Xml.Linq命名空间下的工具类就能搞定,步骤如下:
1. 解析API返回的XML文本
先把API返回的$xml字符串解析成可操作的XML文档对象:
using System.Xml.Linq; // 假设apiResponseList是API返回的列表,第二个元素为XML字符串 string rawXml = apiResponseList[1].ToString(); XDocument originalDoc = XDocument.Parse(rawXml);
2. 构建目标根节点并迁移内容
创建指定的<be05results>根节点,把原XML里的所有子节点(比如<table>)直接迁移过来:
// 构建带指定属性的目标根节点 XElement targetRoot = new XElement("be05results", new XAttribute("version", "10.19.7.22"), new XAttribute("date", "4.08.2023 09.32"), new XAttribute("company", "SBi"), new XAttribute("model", "Zone 1") ); // 将原XML的直接子节点(如<table>)添加到新根节点下 foreach (XElement child in originalDoc.Root.Elements()) { targetRoot.Add(child); } // 生成最终的XML文档 XDocument finalDoc = new XDocument(targetRoot);
3. 保存为XML文件
把处理好的XML写入目标文件:
// 保存到指定路径,用UTF8编码避免字符乱码 finalDoc.Save(@"C:\YourTargetPath\be05results.xml", SaveOptions.None);
额外场景处理
如果原XML的根节点已经是<be05results>,只是属性不符合要求,直接修改属性即可,无需重建根节点:
originalDoc.Root.SetAttributeValue("version", "10.19.7.22"); originalDoc.Root.SetAttributeValue("date", "4.08.2023 09.32"); // 其他属性同理修改 originalDoc.Save(@"C:\YourTargetPath\be05results.xml");
这种方式会自动保留原XML里<table>、<row>、<id>、<jan>等所有节点结构,完全不用手动定义每个节点的层级和格式。
内容的提问来源于stack exchange,提问作者KurtRavn
相关产品推荐
相关产品推荐

