C# 需要使用xmltextWriter在C中编写XML起始元素的帮助吗
我这样写代码C# 需要使用xmltextWriter在C中编写XML起始元素的帮助吗,c#,xml,C#,Xml,我这样写代码 XmlDocument xdocMulticom = new XmlDocument(); StringWriter strwMultiXml = new StringWriter(); XmlTextWriter xmlMultiAirInfo = new XmlTextWriter(strwMultiXml); xmlMultiAirInfo.Formatting = Formatting.None; xmlMultiAirInfo.WriteStartD
XmlDocument xdocMulticom = new XmlDocument();
StringWriter strwMultiXml = new StringWriter();
XmlTextWriter xmlMultiAirInfo = new XmlTextWriter(strwMultiXml);
xmlMultiAirInfo.Formatting = Formatting.None;
xmlMultiAirInfo.WriteStartDocument();
xmlMultiAirInfo.WriteStartElement("ns", "cancelreservation", "http://www.opentravel.org/ota/2003/05");
xmlMultiAirInfo.WriteStartElement("OTA_VehCancelRQ");
xmlMultiAirInfo.WriteAttributeString("xmlns", "http://www.opentravel.org/ota/2003/05");
xmlMultiAirInfo.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
xmlMultiAirInfo.WriteAttributeString("Version", "1.002");
xmlMultiAirInfo.WriteAttributeString("PrimaryLangID", "EN");
xmlMultiAirInfo.WriteAttributeString("ReqRespVersion", "2.001");
xmlMultiAirInfo.WriteStartElement("POS");
xmlMultiAirInfo.WriteStartElement("Source");
xmlMultiAirInfo.WriteStartElement("RequestorID");
xmlMultiAirInfo.WriteAttributeString("Type", "4");
xmlMultiAirInfo.WriteAttributeString("ID", "F0F4CCE4A9C24355");
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteStartElement("VehCancelRQCore");
xmlMultiAirInfo.WriteAttributeString("CancelType", "Cancel");
xmlMultiAirInfo.WriteStartElement("UniqueID");
xmlMultiAirInfo.WriteAttributeString("Type", "14");
xmlMultiAirInfo.WriteAttributeString("ID", "N2169641");
xmlMultiAirInfo.WriteStartElement("PersonName");
xmlMultiAirInfo.WriteElementString("GivenName", "Sandra");
xmlMultiAirInfo.WriteElementString("Surname", "Jhonsan");
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteStartElement("VehCancelRQInfo");
xmlMultiAirInfo.WriteStartElement("Vendor");
xmlMultiAirInfo.WriteAttributeString("Code", "ZR");
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xmlMultiAirInfo.WriteEndElement();
xdocMulticom.LoadXml(strwMultiXml.ToString());
它生成如下输出:
<?xml version="1.0" encoding="utf-16"?>
<ns:cancelreservation xmlns:ns="http://www.opentravel.org/ota/2003/05">
<OTA_VehCancelRQ xmlns="http://www.opentravel.org/ota/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.002" PrimaryLangID="EN" ReqRespVersion="2.001">
<POS>
<Source>
<RequestorID Type="4" ID="F0F4CCE4A9C24355" />
</Source>
</POS>
<VehCancelRQCore CancelType="Cancel">
<UniqueID Type="14" ID="N2169641">
<PersonName>
<GivenName>Sandra</GivenName>
<Surname>Jhonsan</Surname>
</PersonName>
</UniqueID>
</VehCancelRQCore>
<VehCancelRQInfo>
<Vendor Code="ZR" />
</VehCancelRQInfo>
</OTA_VehCancelRQ>
</ns:cancelreservation>
<?xml version="1.0" encoding="utf-16"?>
<ns:cancelreservation>
<OTA_VehCancelRQ xmlns="http://www.opentravel.org/ota/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.002" PrimaryLangID="EN" ReqRespVersion="2.001">
<POS>
<Source>
<RequestorID Type="4" ID="F0F4CCE4A9C24355" />
</Source>
</POS>
<VehCancelRQCore CancelType="Cancel">
<UniqueID Type="14" ID="N2169641">
<PersonName>
<GivenName>Sandra</GivenName>
<Surname>Jhonsan</Surname>
</PersonName>
</UniqueID>
</VehCancelRQCore>
<VehCancelRQInfo>
<Vendor Code="ZR" />
</VehCancelRQInfo>
</OTA_VehCancelRQ>
</ns:cancelreservation>
这对我来说没关系,但我需要这样:
<?xml version="1.0" encoding="utf-16"?>
<ns:cancelreservation xmlns:ns="http://www.opentravel.org/ota/2003/05">
<OTA_VehCancelRQ xmlns="http://www.opentravel.org/ota/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.002" PrimaryLangID="EN" ReqRespVersion="2.001">
<POS>
<Source>
<RequestorID Type="4" ID="F0F4CCE4A9C24355" />
</Source>
</POS>
<VehCancelRQCore CancelType="Cancel">
<UniqueID Type="14" ID="N2169641">
<PersonName>
<GivenName>Sandra</GivenName>
<Surname>Jhonsan</Surname>
</PersonName>
</UniqueID>
</VehCancelRQCore>
<VehCancelRQInfo>
<Vendor Code="ZR" />
</VehCancelRQInfo>
</OTA_VehCancelRQ>
</ns:cancelreservation>
<?xml version="1.0" encoding="utf-16"?>
<ns:cancelreservation>
<OTA_VehCancelRQ xmlns="http://www.opentravel.org/ota/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.002" PrimaryLangID="EN" ReqRespVersion="2.001">
<POS>
<Source>
<RequestorID Type="4" ID="F0F4CCE4A9C24355" />
</Source>
</POS>
<VehCancelRQCore CancelType="Cancel">
<UniqueID Type="14" ID="N2169641">
<PersonName>
<GivenName>Sandra</GivenName>
<Surname>Jhonsan</Surname>
</PersonName>
</UniqueID>
</VehCancelRQCore>
<VehCancelRQInfo>
<Vendor Code="ZR" />
</VehCancelRQInfo>
</OTA_VehCancelRQ>
</ns:cancelreservation>
有什么办法可以改变它吗?正如我所看到的,区别只在于第一个节点中的名称空间。。。还是我的错 替换此行: xmlMultiAirInfo.WriteStartelements,取消预订,http://www.opentravel.org/ota/2003/05; 用这个 xmlMultiAirInfo.WriteStartelements,取消预订;
嗯,C做得很好。因为您的元素不知道这样的前缀。
在您的示例中,cancelreservation不是根元素,但如果它是根元素,则必须存在xmlns属性。是否可以添加一些示例,说明您想要什么和得到什么?现在还不清楚您想问什么。嗨,实际上我需要不带名称空间的根元素,其余的xml都是same@Sandra这将是无效的XML。如果元素名称没有命名空间,则它不能有命名空间前缀。在ns:cancelreservation上使用命名空间声明是否确实会给您带来问题?据我所知,从你对Spawn答案的评论来看,这样应该很好,当你自己生成它时,应该是这样。嗨,是的,这只是差异。但是当我像你一样写作时。它像我一样生成o/p,是的,你是对的。只有你看到的差异。。但它会产生o/p,就像。。。。。这是不可取的,我在麻烦bcz后的第二天tommarow是delevery dayhi..我想创建一个像这样的soap,C做得很好。因为您的元素不知道这样的前缀。在您的示例中,cancelreservation不是根元素,但如果它是根元素,则必须存在xmlns属性。也在回答中编辑。