大家好。我创建 XML。
错误:System.ArgumentException:“不能作为子节点插入这个节点和它的祖先。”
/*<?xml version="1.0" encoding="utf-8" ?> */
//создание объявления (декларации) документа
XmlDeclaration XmlDec = XmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
//добавляем в документ
XmlDoc.AppendChild(XmlDec);
//создание корневого элемента
XmlElement GetInform = XmlDoc.CreateElement("GetInform");
XmlElement elem_getReferenceSPV4664 = XmlDoc.CreateElement("ns0:getReferenceSPV4664");
elem_getReferenceSPV4664.SetAttribute("xmlns:ns0", "http://service.siw.pktbcki.rzd/");
elem_getReferenceSPV4664.AppendChild(elem_getReferenceSPV4664); //Тут ошибка
XmlElement elem_ReferenceSPV4664Request = XmlDoc.CreateElement("ns0:ReferenceSPV4664Request");
GetInform.AppendChild(elem_ReferenceSPV4664Request);
XmlElement elem_idUser = XmlDoc.CreateElement("idUser");
elem_ReferenceSPV4664Request.AppendChild(elem_idUser);
elem_idUser.AppendChild(XmlDoc.CreateTextNode("0"));
XmlElement elem_vagons = XmlDoc.CreateElement("vagons");
elem_ReferenceSPV4664Request.AppendChild(elem_vagons);
XmlElement elem_vagon = XmlDoc.CreateElement("vagon");
elem_vagons.AppendChild(elem_vagon);
elem_vagon.AppendChild(XmlDoc.CreateTextNode("75142901"));
选项 2:
XDocument xdoc = new XDocument();
// создаем первый элемент
XElement Request = new XElement("GetInform");
// создаем атрибут
XAttribute getReferenceSPV4664 = new XAttribute("ns0:" + "getReferenceSPV4664 xmlns:ns0", "http://service.siw.pktbcki.rzd/"); //Тут ошибка
XElement ReferenceSPV4664Request = new XElement("ReferenceSPV4664Request");
XElement idUser = new XElement("idUser", "0");
XElement vagons = new XElement("vagons");
// добавляем атрибут и элементы в первый элемент
Request.Add(getReferenceSPV4664);
Request.Add(ReferenceSPV4664Request);
Request.Add(idUser);
System.Xml.XmlException:“符号”:“,十六进制值 0x3A,不能在名称中使用。”
XML 本身必须是格式。
<GetInform>
<ns0:getReferenceSPV4664 xmlns:ns0="http://service.siw.pktbcki.rzd/">
<ns0:ReferenceSPV4664Request>
<idUser>0</idUser>
<vagons>
<vagon>50032382</vagon>
</vagons>
</ns0:ReferenceSPV4664Request>
</ns0:getReferenceSPV4664>
</GetInform>
获得等效 XML 的最简单的选项可能是这样的:
这也可以写得更紧凑:
如果您想要一个严格的属性名称,就像在您的示例中一样,您需要使用文档中的示例:
结果: