XmlDocument.GetElementById() 返回 null
XmlDocument.GetElementById() is returning null
这是我的 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,但据我所知一切都是有效的...
您的 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)>
]>
<!ATTLIST tax id ID #REQUIRED>
您的 tax 元素上的 id 属性也可以称为 id 以外的名称,例如 taxid:
<!ATTLIST tax taxid ID #REQUIRED>
这是我的 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,但据我所知一切都是有效的...
您的 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)>
]>
<!ATTLIST tax id ID #REQUIRED>
您的 tax 元素上的 id 属性也可以称为 id 以外的名称,例如 taxid:
<!ATTLIST tax taxid ID #REQUIRED>