繁体   English   中英

加载和读取XML文件的处理指令失败

[英]Loading and reading XML file fails on its processing instruction

我陷入了一个微妙的问题。 我尝试构建一个C#4.0控制台应用程序来读取XML文件。

XML文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type='text/xsl' href='report.xsl' version='1.0'?>
...
<logs>
...
</logs>

这是我的代码:

...
var root = XDocument.Load(xmlStream);

IEnumerable<XElement> address =
    from el in root.Descendants("formated-text")
    select el;
...

这在Load方法中给出了以下错误:

':'字符,十六进制值0x3A,不能包含在名称中。 第2行,第6位。

将第二行的冒号更改为' - '可以解决错误... duh

我可以在我的代码中做什么来读取源XML而不必先替换'stupid'冒号?

谢谢!

它看起来像你只是有一个无效的XML文档。 结肠应该是连字符(根据W3C )。 我怀疑你是否能够使LINQ to XML解析一个无效的文档 - 你不应该尝试。 您应该修改文档。

冒号错了,你应该使用破折号

http://www.w3.org/Style/styling-XML.en.html

没有。 那个“愚蠢的冒号”在那个位置根本无效。

您的XSL-Stylesheet元素不正确。

它应该是:

<?xml-stylesheet type='text/xsl' href='report.xsl' version='1.0'?>

尝试针对任意数量的在线验证器验证您的XML。

您可以尝试将XML作为字符串加载并使用字符串解析修复此问题,或者您可以逐行读取原始文件并修复xml:stylsheet的任何出现,然后将其保存为此示例中的文本文件,但它将是更好地让任何人创建XML以在源头修复它。

我发现这些“格式错误”的XML文件的起源可以追溯到1990年代中期......是的,今天这样一个旧系统仍然在使用,仍然会产生这种输出。 我可以在代码中使用解决方法。

感谢您花时间为这些XML元素提供了一些有用的线索。

我需要确认源XML的创建者在冒号时出错了。

我已经实施了一个计划B,直到我能说服一个非常大的部门(不是我的部门)来改变他们的申请......:o(

计划B是首先读取XML文件并替换所有'xml:'出现。 然后将此更正的文件提供给我的流程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM