我有一些代码可以使用XmlDocument从具有名称空间的xml文件中读取。我的挑战是我拥有了我正在硬编码的文件的名称空间,并将其传递给XmlNamespaceManager。我希望我的方法是更具灵活性。要读取任何类型的xml文件。如果它具有名称空间,则可以使用名称空间管理器来读取元素,而无需对名称空间进行硬编码。如果文件没有名称空间,则可以继续进行操作解析它。下面是我所做的。
xmldoc = new XmlDocument ();
xmldoc.Load (fileLocation);
XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);
nameSpaceManager.AddNamespace ("ns","http://schemas.sample.data.org/2005");
XmlNodeList nodeList = xmldoc.SelectNodes("/ns:Demo/ns:Items", nameSpaceManager);
if (nodeList != null)
{
foreach (XmlNode childNode in nodeList)
{
string first = childNode.SelectSingleNode ("ns:First", nameSpaceManager).InnerText;
string second= childNode.SelectSingleNode ("ns:Second", nameSpaceManager).InnerText;
string third = childNode.SelectSingleNode ("ns:Third", nameSpaceManager).InnerText;
}
}
这是我正在使用的示例xml文件
<Demo xmlns:i="http://www.justasample.com" xmlns="http://schemas.sample.data.org/2005">
<Items>
<First>first</First>
<Second>second</Second>
<Third>third</Third>
</Items>
</Demo>