![](/img/trans.png)
[英]c# xml replace xmlns:noNamespaceSchemaLocation with NS0: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.