簡體   English   中英

從xml文件獲取noNameSpaceSchemaLocation

[英]Get noNameSpaceSchemaLocation from xml file

我正在嘗試讀取具有其架構的xml文件。

我的xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<PersonList 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="D:\MySchema.xsd">

現在,我正在讀取xml文件,如下所示:

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;

using (XmlReader reader = XmlReader.Create("MyXmlFile.xml", settings))
{
    while(reader.Read())
    //.....
}

private static void ValidationCallBack(object sender, ValidationEventArgs args)
{
    if (args.Severity == XmlSeverityType.Warning)
    Console.WriteLine("\tWarning: Matching schema not found.  No validation occurred." + args.Message);
    else
    Console.WriteLine("\tValidation error: " + args.Message);

}  

問題是,當找不到架構'D:\\ MySchema.xsd'時,它仍在讀取xml,因此noNamespaceSchemaLocation是無用的...因此,我在代碼中設置了架構路徑,如下所示:

settings.Schemas.Add(null, "D:\\MySchema.xsd");

現在它正在使用模式讀取xml文件,但是我在這里設置了硬編碼的模式路徑...我想從xml文件中獲取模式路徑(noNamespaceSchemaLocation)並將模式添加到設置中,具體取決於模式從xml文件。 通過這樣做,我還可以檢查該模式是否存在。

明確說明:如何從xml文件獲取noNamespaceSchemaLocation?

xsi:noNamespaceSchemaLocation="anyURI"

您可能需要將位置指定為uri,因此類似file://d:/myschema.xsd

框架為什么不能加載noNamespaceSchemaLocation屬性的值,因為它是為該類定義的標准屬性? 可能是XML庫的增強功能,可以將noNamespaceSchemaLocation屬性值加載到Schemas下的某些屬性,以便開發人員更容易提取值並檢查文件是否存在並繼續驗證Xml。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM