日期:2014-05-18  浏览次数:21117 次

XmlDocument的getElementById()返回null
初学C#,今天遇到了一个问题,请高手指点

我用一个XmlDocument对象加载了一个xml文件,然后用createElement()方法生成了一些新结点<Item>放到里面,
但是奇怪的事情发生了

用getElementById()取原来文件中有的元素时,能取到
用getElementById()取动态新生成的元素时,返回null

Xml文件格式如下:
XML code

<!DOCTYPE Category [
    <!ELEMENT Category ANY>
    <!ELEMENT Item     EMPTY>
    <!ATTLIST Category id      ID    #REQUIRED>
    <!ATTLIST Category name    CDATA #IMPLIED>
    <!ATTLIST Category comment CDATA #IMPLIED>
    <!ATTLIST Category text    CDATA #IMPLIED>
    <!ATTLIST Category count   CDATA #IMPLIED>
    <!ATTLIST Item     id      ID    #REQUIRED>
    <!ATTLIST Item     name    CDATA #IMPLIED>
    <!ATTLIST Item     count   CDATA #IMPLIED>
]>

<Category id="10000">
  <Category id="11000">
  </Category>
</Category>



这里是对它的操作
C# code

            XmlElement element = doc.CreateElement("ITEM", doc.NamespaceURI);
            
            element.SetAttribute("id", id);
            element.SetAttribute("name", name);
            element.SetAttribute("text", name);

            parent.AppendChild(element);

            doc.getElementById(id); //这里返回null



------解决方案--------------------
添加之后 保存 读取
------解决方案--------------------
探讨

我是楼主,补全一下代码

C# code

XmlElement parent = doc.getElementById("11000"); //这里取的东西正常
XmlElement element = doc.CreateElement("ITEM", doc.NamespaceURI);

……

------解决方案--------------------
xmldocument的话,你create了之后,只是放到内存中而已。而getElementById是从你真正的文件对象里查找的,所以当然找不到了