无法使用C#和XmlDocument读取XML

本文关键字:XmlDocument 读取 XML | 更新日期: 2023-09-27 18:28:13

我想用C#读取一个XML文件,但总是出错。

这是我的XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<OMDS xmlns="urn:omds20" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="urn:omds20 ./omds26-00.xsd">
   <PAKET VUNr="014" PaketZpktErstell="2014-08-29T10:45:08.575" PaketZpktLetztErstell="2014-08-29T10:45:08.575" PaketInhCd="VM" PaketUmfCd="G" VUVersion="26-00" DVRNrAbs="0">
       <PERSON ....
       <PERSON ....
       <PERSON ....

我想阅读这个XML,但是XMLContentNodes总是空的。所以我无法使用此路径获取SelectSingleNode,但我找不到这里应该出了什么问题?

XmlDocument doc = new XmlDocument();
doc.Load(openFileDialog1.FileName);
XmlNode XMLContentNodes = doc.SelectSingleNode("/OMDS/PAKET"); // Error Here
XmlNodeList PersonNodeList = XMLContentNodes.SelectNodes("PERSON");
foreach (XmlNode node in PersonNodeList)
{
    .....

如有任何帮助,我们将不胜感激。

无法使用C#和XmlDocument读取XML

常见的名称空间问题。尝试
XmlNamespaceManager mgr = new XmlNamespaceManager(new NameTable());
mgr.AddNamespace("d", "urn:omds20");
XmlNode XMLContentNodes = doc.SelectSingleNode("/d:OMDS/d:PAKET", mgr); 
XmlNodeList PersonNodeList = XMLContentNodes.SelectNodes("d:PERSON", mgr);

在加载XML文件后,您需要将命名空间urn:omds20添加到docXmlDocument对象中

XmlDocument doc = new XmlDocument();
doc.Load(openFileDialog1.FileName);
XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(doc.NameTable);
xmlnsManager.AddNamespace("omds20", "urn:omds20");

然后您可以查询PAKET节点,如下所示:

XmlNode paketNode = doc.SelectSingleNode("/omds20:OMDS/omds20:PAKET", xmlnsManager);