1

私はこのようなコードを書きます

  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>

それを変更する方法はありますか?

4

1 に答える 1

0

私が見るように、最初のノードの名前空間のみの違い...(またはそれは私の間違いですか?)

次の行を置き換えます。

xmlMultiAirInfo.WriteStartElement("ns", "cancelreservation", "http://www.opentravel.org/ota/2003/05");

これとともに。

xmlMultiAirInfo.WriteStartElement("ns", "cancelreservation", "");

まあ、C# は問題なく動作しています。あなたの要素はそのような接頭辞を知らないからです。あなたのサンプルでは、​​「cancelreservation」はルート要素ではありませんが、ルートになる場合は xmlns 属性が存在する必要があります。

于 2013-01-16T09:39:07.710 に答える