Проверка XML: десятичное значение атрибута, начинающееся с пробела

Я разработал небольшой C # скрипт, который открывает файл XLS , анализирует его и создает список файлов XML , проверяющий их соответствие с файлом XSD .

Я ' Я пытался загрузить эти проверенные файлы в стороннюю онлайн-службу (та же компания, которая предоставила мне документацию / xsd), и один сгенерированный файл не принимается, потому что НЕ ДЕЙСТВИТЕЛЬНО .

Файл не принимается, потому что у него есть пробел в начале десятичного значения в атрибуте узла; удаление этого места решает проблему.

Я создал простой тестовый пример, в котором метод XDocument Validate проверяет XML с дополнительным пространством без каких-либо проблем.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Schema;
using System.Xml.Linq;
using System.Xml;
using System.IO;

namespace TestParser {
    class Program {
        static void Main(string[] args) {
            string xsdMarkup =
            @"
                
                    
                    
                        
                        
                        
                        
                    
                    
                
                ";
        XmlSchemaSet schemas = new XmlSchemaSet();
        schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));

        XDocument doc1 = new XDocument(
            new XElement("option","test", new XAttribute("value", " 423423")
            ));    
        Console.WriteLine("Validating doc1");
        bool errors = false;
        doc1.Validate(schemas, (o, e) =>
                                    {
                                        Console.WriteLine("{0}", e.Message);
                                        errors = true;
                                    }, true);
        Console.WriteLine("doc1 {0}", errors ? "not valid" : "validated");
        Console.WriteLine();
        Console.WriteLine("Contents of doc1:");
        Console.WriteLine(doc1);
        }
    }
}

Результат такой:

Validating doc1
doc1 validated

Contents of doc1:

Верно ли, что синтаксический анализатор C # XML проверяет этот XML?

Файл не принят, поскольку в его атрибуте узла есть пробел в начале десятичного значения; удаление этого места решает проблему.

Я создал простой тестовый пример, в котором метод XDocument Validate проверяет XML с дополнительным пространством без каких-либо проблем.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Schema;
using System.Xml.Linq;
using System.Xml;
using System.IO;

namespace TestParser {
    class Program {
        static void Main(string[] args) {
            string xsdMarkup =
            @"
                
                    
                    
                        
                        
                        
                        
                    
                    
                
                ";
        XmlSchemaSet schemas = new XmlSchemaSet();
        schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));

        XDocument doc1 = new XDocument(
            new XElement("option","test", new XAttribute("value", " 423423")
            ));    
        Console.WriteLine("Validating doc1");
        bool errors = false;
        doc1.Validate(schemas, (o, e) =>
                                    {
                                        Console.WriteLine("{0}", e.Message);
                                        errors = true;
                                    }, true);
        Console.WriteLine("doc1 {0}", errors ? "not valid" : "validated");
        Console.WriteLine();
        Console.WriteLine("Contents of doc1:");
        Console.WriteLine(doc1);
        }
    }
}

Результат такой:

Validating doc1
doc1 validated

Contents of doc1:

Верно ли, что синтаксический анализатор C # XML проверяет этот XML?

Файл не принят, поскольку в его атрибуте узла есть пробел в начале десятичного значения; удаление этого места решает проблему.

Я создал простой тестовый пример, в котором метод XDocument Validate проверяет XML с дополнительным пространством без каких-либо проблем.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Schema;
using System.Xml.Linq;
using System.Xml;
using System.IO;

namespace TestParser {
    class Program {
        static void Main(string[] args) {
            string xsdMarkup =
            @"
                
                    
                    
                        
                        
                        
                        
                    
                    
                
                ";
        XmlSchemaSet schemas = new XmlSchemaSet();
        schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));

        XDocument doc1 = new XDocument(
            new XElement("option","test", new XAttribute("value", " 423423")
            ));    
        Console.WriteLine("Validating doc1");
        bool errors = false;
        doc1.Validate(schemas, (o, e) =>
                                    {
                                        Console.WriteLine("{0}", e.Message);
                                        errors = true;
                                    }, true);
        Console.WriteLine("doc1 {0}", errors ? "not valid" : "validated");
        Console.WriteLine();
        Console.WriteLine("Contents of doc1:");
        Console.WriteLine(doc1);
        }
    }
}

Результат такой:

Validating doc1
doc1 validated

Contents of doc1:

Верно ли, что синтаксический анализатор C # XML проверяет этот XML?
Можно ли заставить синтаксический анализатор быть более разборчивым в этом форматировании?

5
задан Deduplicator 10 February 2015 в 22:42
поделиться