Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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-读取标记名中带有冒号的xml_C#_Xmlreader - Fatal编程技术网

C# XmlReader-读取标记名中带有冒号的xml

C# XmlReader-读取标记名中带有冒号的xml,c#,xmlreader,C#,Xmlreader,我有非常复杂的XML,需要使用XmlReader阅读 xml中的元素如下所示: <log:event> <ev:logger>some text</ev:logger> <ev:line>24</ev:line> <ev:ex> <ev:levelone>some message</ev:levelone> <ev:leveltwo>some ot

我有非常复杂的XML,需要使用
XmlReader
阅读
xml中的元素如下所示:

<log:event>
   <ev:logger>some text</ev:logger>
   <ev:line>24</ev:line>
   <ev:ex>
      <ev:levelone>some message</ev:levelone>
      <ev:leveltwo>some other message</ev:leveltwo>
   </ev:ex>
</log:event>

一些文本
24
一些信息
其他信息
XmlReader
将不知道如何读取,因为它在每个xml标记上都没有名称空间定义。
我本可以通过编程方式(将名称空间附加到字符串中)完成此操作,但文件太大,我认为这是不可能的。
(我不控制文件的创建)。
有没有任何建议,在没有名称空间的情况下,如何将该文件读取为xml


谢谢

您仍然可以附加名称空间,只需将文件读入内存并在内存中进行操作即可。我使用机器制造商提供的几个不符合XML标准的基于XML的API来实现这一点,以使普通XML解析器更易于阅读。

否。使用未定义名称空间时,文件不是正确的XML文档。不要期望XML解析器解析不正确的XML文档。这些是冒号,而不是分号——如果没有名称空间别名,它就不是有效的XML文档。即使您不能控制文件的创建,也应该抱怨它们没有生成有效的XML。但是,如果您知道使用的所有前缀,您可以在根元素添加名称空间别名。@JonSkeet-这是个好消息,我正在控制根元素。你能举个例子吗?我怎样才能让读者知道所有的用例?(
ev:logger、ev:line、ev:ex等)thanks@SexyMF:只要有
xmlns:ev=”http://someurl“
-或者您想要的任何URI,基本上。为每个命名空间别名使用不同的URI。元素nmaes(logger、line、ex等)无关紧要——您感兴趣的只是名称空间别名。但是为什么你只控制根元素而不控制其他元素呢?这听起来很奇怪,你最好让生成文件的人生成真正的XML。@JonSkeet-我可以只附加根元素,但由于它是一个巨大的文件,所以编写字符串不是很聪明。替换并删除
。我可能很快就会忘记的(:这是不可能的,我只能操作根元素,正如我告诉过你的,文件太大了。如果你做得不对,我就有内存不足的危险。我可以处理高达2gb的文件,没有任何内存异常。这是可能的。你可能正试图通过XmlReader本身来实现这一点