Nano Hash - криптовалюты, майнинг, программирование

Проверить мыло xml с помощью валидатора против xsd

Я хочу проверить xml-запрос мыла на заданный xsd. Запрос может быть огромным, поэтому я не могу просто извлечь содержимое тела мыла и выполнить проверку, вместо этого я выполняю проверку на основе потоковой передачи. Я уже сделал xsd для тела мыла (часть запроса), и он не содержит никакой информации о заголовках мыла, поэтому проверка не удалась. Что я сделал, так это импортировал схему мыла в свой xsd, чтобы валидатор мог идентифицировать заголовки мыла. Это сработало, но проверка проходит успешно, даже если тело мыла ничего не содержит. Как мы можем указать в xsd, что тело мыла должно содержать хотя бы определенный элемент? Мой модифицированный xsd вставлен ниже. благодаря.

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sample"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="sample">
    <xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/"
                schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"/>
    <xsd:complexType name="type1">
        <xsd:sequence>
            <xsd:element name="item" type="tns:type2" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="type3">
        <xsd:sequence>
            <xsd:element name="item" type="tns:type4" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="element1">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="RETURN" type="tns:type3" minOccurs="0"/>
                <xsd:element name="HEADER" type="tns:type1"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="element2">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="RETURN" type="tns:type3" minOccurs="0"/>
                <xsd:element name="ERRORS" type="xsd:int"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
09.02.2016

Ответы:


1

Попробуйте что-то похожее на:

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
FileInputStream fileInputStream = new FileInputStream(new File("Simple.xsd"));  
Schema schema = factory.newSchema(new StreamSource(fileInputStream));  
Validator val = schema.newValidator(); 
FileInputStream fileInputStream2 = new FileInputStream(new File("Input.xml"));  
val.validate(new StreamSource(fileInputStream2));
09.02.2016
  • Да, в настоящее время я использую такой валидатор, моя проблема связана со структурой xsd, которая не может указывать минимальные значения элементов тела. 10.02.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..