小编Pat*_*k Q的帖子

C# XML 无法根据 XmlReaderSettings 中的架构正确验证

我进行了搜索,没有发现任何解决此问题的问题。

我正在尝试根据模式验证各种 XML,它似乎正在验证所有格式良好的 XML,而不仅仅是符合模式的 XML。我已经发布了我正在使用的代码、架构、示例有效 XML 和示例无效 XML。

我已经为此苦苦挣扎了一段时间。我对这件事的大部分内容一无所知。我必须学习如何编写 XSD,编写 XSD,然后学习如何在 C# 中解析 XML。这些都是我以前从未做过的。我使用了许多教程和微软网站来得出以下内容。我认为这应该有效,但事实并非如此。

我究竟做错了什么?

private bool ValidateXmlAgainstSchema(string sourceXml, string schemaUri)
{
    bool validated = false;
    try
    {
        //  REF:
        //  This should create a SCHEMA-VALIDATING XMLREADER
        //  http://msdn.microsoft.com/en-us/library/w5aahf2a(v=vs.110).aspx

        XmlReaderSettings xmlSettings = new XmlReaderSettings();
        xmlSettings.Schemas.Add("MySchema.xsd", schemaUri);
        xmlSettings.ValidationType = ValidationType.Schema;
        xmlSettings.ValidationFlags = XmlSchemaValidationFlags.None;
        XmlReader xmlReader = XmlReader.Create(new StringReader(sourceXml), xmlSettings);

        //  parse the input (not sure this is needed)
        while (xmlReader.Read()) ;

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlReader); …
Run Code Online (Sandbox Code Playgroud)

c# xml validation schema xsd

5
推荐指数
1
解决办法
6428
查看次数

如何声明一个新的运算符"!??" (测试对象不为null)

有没有办法声明一个一元运算符,如'!??'

我想象这样的事情(非工作代码)

public bool operator !??<T> (this <T> item) {
    return item != null;
}
Run Code Online (Sandbox Code Playgroud)

所以我会像这样使用它

// day is a value and might possibly be null
string greeting = name !?? "hello there " + name;
Run Code Online (Sandbox Code Playgroud)

我发现自己经常要做这种尴尬

// day is a value and might be null
string greeting = day != null ? "hello there " + name : "";
Run Code Online (Sandbox Code Playgroud)

在我提供的示例中相当清楚,但是当您使用getter/setter进行视图模型时,它会让人感到有些困惑,并且会增加错过逻辑错误的可能性.因此:

public DateTime? SearchDate {
    get { return _searchDate; }
    set { _searchDate = value != null ? value.Value : …
Run Code Online (Sandbox Code Playgroud)

c# generics nullable unary-operator

2
推荐指数
1
解决办法
95
查看次数

如何使用.bat创建本地.html图库

我正在尝试创建一个简单的.bat文件,该文件将生成一个.html文件,其中包含指向当前目录中所有图像的图像链接.

用法:C:>画廊

输出:gallery.html

文件内容:

<HTML><HEAD></HEAD><BODY>
<IMG SRC="C:/path/path/path/image1.gif">
<IMG SRC="C:/path/path/path/randomepic.gif">
<IMG SRC="C:/path/path/path/asdfsadfasd.gif">
</BODY></HTML>
Run Code Online (Sandbox Code Playgroud)

请注意,图像文件将具有不可预测的名称,但始终为.gif.

我得到了什么:(在gallery.bat)

 @echo off
    set file_start=<HTML><HEAD></HEAD><BODY>
    set image_start=<IMG SRC="
    set image_dir=`cd`
    set image_end=">
    set file_end=</BODY></HTML>
    set file_name=gallery.html

    echo %file_start% > %file_name%
    for %%image in (*.gif) do @echo %image_start%%image_dir%%%image%image_end% >> $file_name%
    echo %file_end% >> %file_name%
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我无法获得小于号的符号,因为批处理文件认为它是输入重定向.如果我用<符号引用行,则引号出现在echo语句中.

另外,我无法将cd命令输出保存到变量%image_dir%

最后,for循环中的echo语句没有正确打印出来.这可能是以前问题的症状.

我希望它只是我遇到的一些小问题.有谁知道如何解决这一问题?谢谢你的时间!

帕特里克Q.

html image batch-file windows-7

0
推荐指数
1
解决办法
1653
查看次数

如何返回包含Enum值的字符串[]

我想创建一个动态GUI,将所有Enum的选项列为按钮.所以,我需要一种方法将Enum类型传递给一个方法,然后返回一个包含枚举类型的所有选项的字符串数组.

例如,给定文件Foo.cs中的Enum声明:

public Enum Fruits {
    Apple,
    Orange,
    Peach
};

public class Foo { ... }
Run Code Online (Sandbox Code Playgroud)

我希望这个返回:

{ "Apple", "Orange", "Peach" }
Run Code Online (Sandbox Code Playgroud)

我经历了几种代码排列.现在我有以下但我得到一个错误" 无法找到类型或命名空间名称'enumeratedType' "

public static string[] EnumToStringArray (System.Type enumeratedType) {
    int         enumSize    =   sizeof(enumeratedType);
    string[]    enumStrings =   new string[enumSize];

    for (int i = 0 ; i < enumSize ; i++) {
        enumStrings[i]  =   enumeratedType.getValues()[i].toString();
    }

    return enumStrings;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试做什么?我已根据此问题中的信息尝试了几次完整的重写.使用C#enum中的sentinal值(编译时枚举的大小)?但我无法让它发挥作用.

c# arrays string enums namespaces

0
推荐指数
1
解决办法
168
查看次数