Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有命名空间别名/前缀的XmlReader上的查询问题_C#_Xml_Xml Namespaces_Xmlreader - Fatal编程技术网

C# 具有命名空间别名/前缀的XmlReader上的查询问题

C# 具有命名空间别名/前缀的XmlReader上的查询问题,c#,xml,xml-namespaces,xmlreader,C#,Xml,Xml Namespaces,Xmlreader,试图通过XmlReader使用C#查询XML,但获取错误原因命名空间别名。XML文件非常大(不要检查特定的名称空间前缀。前缀不重要,重要的是元素的本地名称和名称空间URI。为什么要使用诸如XmlReader这样的低级工具?您尝试过LINQ to XML吗?因为文件非常大,XmlReader没有将文件加载到内存中。但是没有,我没有尝试过LINQ转换为XML主要是因为我不熟悉LINQ。您应该熟悉LINQ转换为XML。xmh=”http://www.kith.no/xmlstds/msghead/20

试图通过XmlReader使用C#查询XML,但获取错误原因命名空间别名。XML文件非常大(不要检查特定的名称空间前缀。前缀不重要,重要的是元素的本地名称和名称空间URI。

为什么要使用诸如
XmlReader
这样的低级工具?您尝试过LINQ to XML吗?因为文件非常大,XmlReader没有将文件加载到内存中。但是没有,我没有尝试过LINQ转换为XML主要是因为我不熟悉LINQ。您应该熟悉LINQ转换为XML。
xmh=”http://www.kith.no/xmlstds/msghead/2006-05-24“var msgHead=doc.Element(mh+“msgHead”);
前缀/别名的问题是,它在下一个xml文件上可能与命名空间完全不同。命名空间可能不同?那么您希望如何读取文档?这是正确的。我将.Name更改为.LocalName,问题就解决了。同时检查链接:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mh:MsgHead xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
        xmlns:mh="http://www.kith.no/xmlstds/msghead/2006-05-24"
        xmlns:n1="http://www.altova.com/samplexml/other-namespace"
        xsi:schemaLocation="http://www.kith.no/xmlstds/msghead/2006-05-24 MsgHead-v1_2.xsd">
 <mh:MsgInfo>
  <mh:Type DN="xxx" V="xxx"/>
  <mh:MIGversion>v1.2 2006-05-24</mh:MIGversion>
  <mh:GenDate>2014-04-01T20:53:08</mh:GenDate>
  <mh:MsgId>xxx</mh:MsgId>
  <mh:ProcessingStatus DN="Produksjon" V="P"/>
  <mh:RequestedPriority DN="Normal" V="N"/>
  <mh:Ack DN="Ja" V="J"/>
  <mh:Sender>
   <mh:ComMethod DN="EDI" V="EDI"/>
   <mh:Organisation>
<mh:OrganisationName>xxxx</mh:OrganisationName>
<mh:Ident>
 <mh:Id>69</mh:Id>
 <mh:TypeId S="xxx" DN="HER-id" V="HER"/>
string meldingsType = "N/A";
XmlReaderSettings settings = new XmlReaderSettings();
settings.CheckCharacters = false;
XmlReader xmlLeser = XmlReader.Create(fil, settings);
while (xmlLeser.Read())
{
    if ((xmlLeser.NodeType == XmlNodeType.Element) && (xmlLeser.Name == "MsgHead"))
    {
       meldingsType = "Hodemelding";
       break;
    }