Последняя функция 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

Ответы на вопрос(1)

Ваш ответ на вопрос