0

我有一个 dtd 文件。在此文件中,元素需要一些属性,例如:

<!ELEMENT NAME (LASTNAME)>
<!ATTLIST NAME SEX CDATA #REQUIRED >

现在在解析文件时,如果属性现在存在,则会引发错误并结束解析;这很好。

但是如果 NAME 元素是这样的:

<NAME SEX="">
 <LASTNAME>Doe</LASTNAME>
</NAME>

属性存在但没有价值的地方。

在针对 dtd 解析 xml 时如何检查这一点。

4

2 回答 2

0

您可以使用XmlReader.HasValue See here

XmlValidatingReader.HasValue 见这里

更新:

var elemList = doc.GetElementsByTagName(...);
for (int i = 0; i < elemList.Count; i++)
{
     var attrVal = elemList[i].Attributes["Name"].Value;
     if (null == attrVal)
     {
         // no value
     } 
}  
于 2013-03-29T17:34:31.343 回答
0

这超出了 DTD 提供空值检查的功能。

您可以做两件事:
1. 添加默认值,如“NoData”
2. 在 XML 中添加 minLength:minLength="2"

但正如 monocadad 建议的那样,您可以使用 HasValue 检查值。

于 2013-03-29T17:49:26.733 回答