我有一个有效的XML文件,由以下.NET C#windows服务读取。 有问题的标签(u1_000)绝对在元素中:
<book id="u1_000" category="xyz">
是否有某些原因GetElementById()找不到带有标记的Book元素? - 谢谢
XmlDocument doc = new XmlDocument();
doc.Load("C:\\j.xml");
XmlElement ee = doc.GetElementById("U1_000");
<book id="U1_000" category="web">
答案 0 :(得分:4)
如果没有别的,也许使用xpath作为备份:
string id = "u1_000";
string query = string.Format("//*[@id='{0}']", id); // or "//book[@id='{0}']"
XmlElement el = (XmlElement)doc.SelectSingleNode(query);
答案 1 :(得分:3)
检查MSDN documentation for this method。在下面的示例中,您可以看到它们如何使用DOCTYPE确定ID的内容。这可能会解决您的问题。
答案 2 :(得分:3)
您需要一个DTD来确定元素上的哪个属性构成唯一ID。在XML中,不会自动假定id
属性应被视为唯一的元素ID。
一般来说,“unDTDed”XML中的getElementById不是很有用。在大多数情况下,理解正在处理的XML文件的结构(例如,根元素称为books
,其中包含一系列book
元素),因此典型的访问将如下所示: - < / p>
XmlElement book = (XmlElement)doc.DocumentElement.SelectSingleNode("book[@ID='U1_000']");
如果您确实不知道元素的XML结构和/或标记名称,那么Marcs答案中描述的暴力搜索将起作用。