XmlDocument and ReadNode

本文关键字:ReadNode and XmlDocument | 更新日期: 2023-09-27 18:10:39

好吧,我糊涂了。我不明白为什么这不起作用。

给定

:

XmlReader reader = ...; //created by calling routine.
XmlDocument tmpDoc = new XmlDocument();
XmlNode a = tmpDoc.ReadNode(reader);
tmpDoc.AppendChild(a);
var t1 = tmpDoc.GetElementsByTagName("Entity")[0];
XmlNode mainNode = tmpDoc.SelectSingleNode("//Entity");

调用GetElementByTagName有效,但调用SelectSingleNode无效。它返回null。我已经尝试了其他形式的选择节点,它们不起作用。
通过调试器,我知道InnerXml是正确的,并包含类似

的内容
<Entity>
  <aaa />
</Entity>

也:如果我在一个文件中使用相同的XML。

XmlDocument eDoc = new XmlDocument();
eDoc.Load(fileName);
XmlNode eNode = eDoc.SelectSingleNode("/Entity");

任何想法。

提前感谢。

吉姆·K

XmlDocument and ReadNode

我试过这个代码:

String xmlString =
    @"<Entity>
        <aaa />
    </Entity>";
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{
    XmlDocument tmpDoc = new XmlDocument();
    XmlNode a = tmpDoc.ReadNode(reader);
    tmpDoc.AppendChild(a);
    var t1 = tmpDoc.GetElementsByTagName("Entity")[0];
    XmlNode mainNode = tmpDoc.SelectSingleNode("//Entity");
}

GetElementsByTagNameSelectSingleNode都有效。所以我猜您的XML是无效的。也许您可以发布重现问题的XML ?