这是正常的 xml 格式吗?
本文关键字:格式 xml | 更新日期: 2023-09-27 18:36:34
<?xml version='"1.0'" encoding='"UTF-8'" ?>
<response uri='"/crm/private/xml/Potentials/updateRecords'">
<result>
<message>***TEST***Record(s) updated successfully</message>
<recorddetail>
<FL val='"Id'">414100000000000000</FL>
<FL val='"Created Time'">2012-03-30 16:54:03</FL>
<FL val='"Modified Time'">2012-04-11 16:53:48</FL>
<FL val='"Created By'"><![CDATA[Bayer]]></FL>
<FL val='"Modified By'"><![CDATA[Bayer]]></FL>
</recorddetail>
</result>
</response>
这是Zoho的通用回复,说明我的记录已成功更新(减去测试部分和虚假的ZohoID。我一直在尝试让我的 C# 程序能够制作这种风格的 xml 文档,因为当我将内容发布到 zoho 时,它实际上在风格上非常相似。但我只是不知道如何让它工作这是他们网站上的一个例子。
<Leads>
<row no="1">
<FL val="Lead Source">Web Download</FL>
<FL val="First Name">contacto 1</FL>
<FL val="Last Name">apellido</FL>
<FL val="Email">testing@testing.com</FL>
<FL val="Title">Manager</FL>
<FL val="Phone">1234567890</FL>
<FL val="Home Phone">0987654321</FL>
<FL val="Other Phone">1212211212</FL>
<FL val="Fax">02927272626</FL>
<FL val="Mobile">292827622</FL>
</row>
</Leads>
我正在尝试使用 C# 中的单元测试复制它,但它给了我各种错误......我已经失去了我尝试过的所有不同方法,但我会发布我当前拥有的内容以及它抛出的错误。
[Test]
public void TestMethod()
{
XmlDocument doc = new XmlDocument();
XmlDeclaration declare = doc.CreateXmlDeclaration("1.0", null, null);
doc.AppendChild(declare);
doc.AppendChild(doc.CreateElement("Potentials"));
doc.AppendChild(doc.CreateAttribute("FL", "AccountName", "Robert Snyder"));
doc.Save("C:''test.xml");
//doc.WriteContentTo(XmlWriter.Create("C:''test.xml"));
}
例外
System.InvalidOperationException : 指定的节点不能作为此节点的有效子节点插入,因为指定的节点是错误的类型。 - c:''Subversion''ZohoApi''ZohoApi''Tests''XmlDataTests.cs:22
请帮助我更好地理解这一点。我已经尝试了很长时间,只是想不通。
您正在尝试将属性添加到文档本身,而不是根节点。缓存由 CreateElement 创建的根元素,并在其上调用 AppendChild。
为了进行以下输出
<Leads>
<row no="1">
<FL val="Lead Source">Web Download</FL>
<FL val="First Name">Robert</FL>
<FL val="Last Name">Snyder</FL>
<FL val="Email">rob@snyder.com</FL>
<FL val="Title">Programmer</FL>
<FL val="Phone">1029384756</FL>
<FL val="Home Phone">6574839201</FL>
<FL val="Other Phone">1243567890</FL>
<FL val="Fax">098776545432</FL>
<FL val="Mobile">1243098566</FL>
</row>
</Leads>
复制 使用此代码并在单元测试中运行它。
[TestFixture]
public class XmlDataTests
{
XmlDocument doc = new XmlDocument();
[Test]
public void TestMethod()
{
var rootNode = doc.CreateElement("Leads");
doc.AppendChild(rootNode);
var rowNode = doc.CreateElement("row");
var attribute = doc.CreateAttribute("no");
attribute.Value = "1";
rowNode.Attributes.Append(attribute);
rowNode.AppendChild(GenerateNode("Lead Source","Web Download"));
rowNode.AppendChild(GenerateNode("First Name","Robert"));
rowNode.AppendChild(GenerateNode("Last Name","Snyder"));
rowNode.AppendChild(GenerateNode("Email","rob@snyder.com"));
rowNode.AppendChild(GenerateNode("Title","Programmer"));
rowNode.AppendChild(GenerateNode("Phone","1029384756"));
rowNode.AppendChild(GenerateNode("Home Phone","6574839201"));
rowNode.AppendChild(GenerateNode("Other Phone","1243567890"));
rowNode.AppendChild(GenerateNode("Fax","098776545432"));
rowNode.AppendChild(GenerateNode("Mobile","1243098566"));
rootNode.AppendChild(rowNode);
doc.Save("C:''test.xml");
}
private XmlNode GenerateNode(string field, string innerValue)
{
var xmlNode = doc.CreateElement("FL");
var xmlAttribute = doc.CreateAttribute("val");
xmlAttribute.Value = field;
xmlNode.Attributes.Append(xmlAttribute);
xmlNode.InnerText = innerValue;
return xmlNode;
}
}