मैं एक छोटे से C#
स्क्रिप्ट एक XLS
फ़ाइल को खोलता है, यह पार्स करके XML
उन्हें एक XSD
फ़ाइल के खिलाफ मान्य फ़ाइलों की एक सूची बनाता है कि विकसित किया है के साथ शुरू दशमलव विशेषता मान।XML सत्यापन: एक अंतरिक्ष
मैं एक तीसरे पक्ष के ऑनलाइन सेवा (एक ही कंपनी है कि मुझे प्रलेखन/XSD सामान दिया) और एक उत्पन्न फ़ाइल को स्वीकार नहीं किया जा रहा है क्योंकि मान्य नहीं करने के लिए इन मान्य फ़ाइलों को अपलोड करने की कोशिश की है।
फ़ाइल स्वीकार नहीं की गई है क्योंकि इसमें नोड विशेषता में दशमलव मान की शुरुआत में एक स्थान है; इस जगह को हटाने से समस्या ठीक हो जाती है।
मैंने एक साधारण परीक्षण केस बनाया है जहां XDocument Validate विधि किसी भी समस्या के बिना एक्सएमएल को अतिरिक्त स्थान के साथ मान्य करता है।
Validating doc1
doc1 validated
Contents of doc1:
<option value=" 423423">test</option>
यह सही है कि सी # एक्सएमएल पार्सर इस 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 =
@"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='option'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:string'>
<xs:attribute name='value' type='xs:decimal'>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>";
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);
}
}
}
परिणाम है?
क्या इस स्वरूपण के बारे में पार्सर को और अधिक पसंद करना संभव है?
यह दिलचस्प धन्यवाद है; तीसरे पक्ष के गोद लेने वाले पार्सर बिल्कुल कोई ट्रिम नहीं कर रहे हैं। – systempuntoout