XmlDocument.GetElementById () возвращает ноль

1

Вот мой 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>

И мой код С#:

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

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

Всякий раз, когда я пытаюсь сделать element с element, я получаю NullReferenceException.

Я провел некоторое исследование, и я обнаружил, что требуется действительный DTD, но насколько я знаю, все действительно...

  • 0
    stackoverflow.com/a/3775800/815938
  • 0
    @kennyzx ты прочитал вопрос? У меня уже есть DTD, и это не HTML ...
Показать ещё 2 комментария
Теги:
dtd

2 ответа

3
Лучший ответ

Ваше DTD неверно. Для вашего собственного DTD вашего XML:

<!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
    Починил это! Огромное спасибо. Я также изменил CDATA для «id» на ID, и это, кажется, тоже хорошо работает.
0
<!ATTLIST tax id ID #REQUIRED>

Атрибут id вашего налогового элемента также можно назвать чем-то иным, чем id, например taxid:

<!ATTLIST tax taxid ID #REQUIRED>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню