【发布时间】:2019-05-07 22:35:01
【问题描述】:
我正在我们的系统中进行 XML 验证,并且我已经通过 XmlReader 实现了这一点,但是我想使用 EMPTY STRING 值验证#Required Attribute。有没有办法在 DTD 属性中实现这一点?
DTD:
<!ATTLIST TEST
pUsername CDATA #REQUIRED (...SHOULD NOT BE AN EMPTY STRING)
pTestAttrib CDATA #REQUIRED (...SHOULD NOT BE AN EMPTY STRING)
>
XML:
<TEST pUsername="" pTestAttrib=""> (I want to validate if this attribute value is empty string)
C#:伪代码
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationEventHandler += delegate (object sender, ValidationEventArgs args) { messageBuilder.AppendLine(args.Message); };
settings.ValidationType = ValidationType.DTD;
settings.DtdProcessing = DtdProcessing.Parse;
using (XmlReader reader = XmlReader.Create(stream, settings))
{
do
{
}
while (reader.Read());
}
【问题讨论】:
-
你的代码在哪里?我不明白,你想做什么
-
@Backs 已经编辑了我的问题,抱歉,这是我的第一个问题..
-
您添加了 [c#] 标签,但我没有看到任何代码。您希望我们为您编写完整的解决方案吗?您应该先自己尝试一下,如果您的代码有问题,可以在这里提问。
-
已经编辑好了..顺便谢谢指正..
-
您知道这些属性中将包含哪些类型的值吗?也许您可以将它们声明为 NMTOKEN or NMTOKENS 而不是 CDATA。否则,就 DTD 更改而言,您将陷入困境。