XmlDocument.GetElementById()返回null

时间:2015-01-14 03:23:01

标签: c# .net xml dtd

这是我的XML:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE taxes[
<!ELEMENT tax (name,percent,description)>
<!ATTLIST tax id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT percent (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>
<taxes>
    <tax id="Tax-1">
        <name>Tax 1</name>
        <percent>6.75</percent>
        <description>Ohio sales tax</description>
    </tax>
</taxes>

我的C#代码:

XmlDocument doc = new XmlDocument();
doc.Load("path-to-file");

XmlElement element = doc.GetElementById("Tax-1");

每当我尝试使用element进行操作时,我都会获得NullReferenceException

我做了一些研究,发现需要有效的DTD,但据我所知,一切都是有效的......

2 个答案:

答案 0 :(得分:3)

您的DTD不正确。 对于您的XML,正确的DTD是:

<!DOCTYPE taxes[
<!ELEMENT taxes (tax*)>
<!ELEMENT tax (name,percent,description)>
<!ATTLIST tax id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT percent (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>

答案 1 :(得分:0)

<!ATTLIST tax id ID #REQUIRED>

您的税元素上的您的ID属性也可以被称为除id之外的其他内容,例如,taxid:

<!ATTLIST tax taxid ID #REQUIRED>