Последняя функция NSXMLDocument цели c, чтобы обработать или проверку мыла или xml, здесь.
ощьюhttps://www.freeformatter.com/xml-validator-xsd.html
Если я полностью вычеркну soapenf из смеси здесь, в ответе и схеме, она будет работать нормально, но я бы хотел сделать и то и другое.
(Кстати, я хотел бы отметить, что этот wsdl и xsd не предоставляются на конечной точке, CISCO предоставляет zip-файл wsdl и xsd-файла). Затем вы можете отправлять запросы на сервер в соответствии с wsdl / xsd, и он будет работать. Но wsdl и xsd недоступны на cisco.com или в виртуальной машине или домене, на котором установлена служба)
Это прекрасно работает в C #, если я указываю на файлы, но я хотел бы загрузить XML-документ в документ переменной NSXMLDocument, чтобы он указывал на свой собственный schemaFile и просто вызывал validate
У меня есть следующее мыло XML
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
<soapenv:Body>
<ns:getCCMVersionResponse xmlns:ns="http://www.cisco.com/AXL/API/10.5"><return><componentVersion>
<version>10.5.2.11900(3)</version>
</componentVersion>
</return>
</ns:getCCMVersionResponse>
</soapenv:Body>
</soapenv:Envelope>
Я взял минимум из файла xsd, предоставленного cisco, и онлайн-инструмент работает с
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:axlapi="http://www.cisco.com/AXL/API/10.5"
attributeFormDefault="unqualified" elementFormDefault="unqualified"
targetNamespace="http://www.cisco.com/AXL/API/10.5" version="10.5">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"/>
<xsd:complexType name="GetCCMVersionRes">
<xsd:complexContent>
<xsd:extension base="axlapi:APIResponse">
<xsd:sequence>
<xsd:element name="return">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="componentVersion">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="version" type="axlapi:String50"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="getCCMVersionResponse" type="axlapi:GetCCMVersionRes"/>
<xsd:simpleType name="String50">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType abstract="true" name="APIResponse">
<xsd:annotation>
<xsd:documentation>All responses must extend abstractResponse.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="sequence" type="xsd:unsignedLong" use="optional"/>
</xsd:complexType>
</xsd:schema>
Обратите внимание, я должен был добавить ниже в xsd-файл, чтобы избежать ошибки SOAP
<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"/>
И это работает в онлайн-инструменте
Теперь это здорово и все для онлайн-инструмента, но я хотел бы проверить сам документ. Это делается (если вы читаете онлайн-инструмент), добавляя к элементу конверта запроса Soap «noNamespaceSchemaLocation» или «schemaLocation» и путь http к файлу xsd (или к созданному выше частичному файлу)
Я испробовал все виды способов с помощью онлайн-инструмента, и он никогда не будет проверять. в настоящее время он находится наhttp://test123a.epizy.com/getCCMVersion.xsd (Я надеюсь, что это не потому, что это бесплатный хост, с которым у меня проблемы), но также должны быть способы сделать это с помощью файла: ///
Я использую macOS и target-c, но весь код выполняет манипуляции с заголовком ответа soap xml и помещает местоположение файла: ///. Я также пробовал http: //.
Кто-нибудь может разгадать эту абсолютную тайну? Это кажется таким простым и понятным из некоторых примеров в Интернете ....
Проверить схему XML с помощью файла xsd в Какао?
http://answerqueen.com/2j/q7vz0zv32j
Как исправить soapenv: проблема с конвертами в схеме XSD при проверке с запросом / ответом SOAP
https://code.i-harness.com/en/q/8bfd7
Как правильно ссылаться на локальный файл XML-схемы?
Cvc-elt.1: не удается найти объявление элемента «мыло: конверт»
Спасибо за вашу помощь заранее
этот парень так и не получил ответаПроверка схемы ответа SOAP