C# 类似api的xml验证工具

C# 类似api的xml验证工具,c#,python-3.x,xml,C#,Python 3.x,Xml,我的xml文件如下所示: <?xml version="1.0"?> <BlTextMain xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> .......................... <Consignee>FREIGHTPLUS (THAILAND) CO., LTD.</Co

我的xml文件如下所示:

<?xml version="1.0"?>
<BlTextMain xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    ..........................
    <Consignee>FREIGHTPLUS (THAILAND) CO., LTD.</Consignee>
    <ConsigneeAddress1>FREE TRADE FACILITY</ConsigneeAddress1>
    <ConsigneeAddress2>919/229 MOO 12, T.THUNGSUKLA, A.SRIRACHA, </ConsigneeAddress2>
    **<ConsigneeAddress3>CHONBURI 20230, THAILAND.&#xB;</ConsigneeAddress3>**
    <ConsigneeAddress4>TEL: +66(0)33 048 387</ConsigneeAddress4>
    <ConsigneeCountry>TBA</ConsigneeCountry>
    .....
</BlTextMain>

..........................
福莱加(泰国)有限公司。
自由贸易设施
919/229 MOO 12,T.THUNGSUKLA,A.SRIRACHA,
**泰国春布里20230和#xB**
电话:+66(0)33048387
TBA
.....
在第3个节点值中:CHONBURI 20230,泰国; 存在一个十六进制字符。因此这不是一个完美的xml。 在线编辑喜欢工作完美。 但是我想为我的项目编写自己的api。有人能帮我用C#/Java/Python编写吗。
我尝试过C#XmlDocument.Validate(),但它不适用于十六进制或扩展十六进制字符。

你说你有XML文件,但你错了。您有非XML文件

所以问题是怎么做

如果您可以将工作流程更改为使用XML,而不是类似于XML但不完全相同的东西,那么您将能够使用标准的现成XML工具(其中许多工具是免费的和/或开源的),并且您将为自己节省大量的钱。如果您的工作流使用非标准格式,无论它们与标准格式多么接近,您都会为自己付出很多额外的努力,并增加很多成本

因此,公司的建议是:找出是谁产生了这些坏数据,让他们改变他们的方式


如果你不能做到这一点,那么你将需要承担修复数据的费用;需要记住的关键是,因为它是非XML数据,所以只能使用非XML工具来修复。

0x0b在XML 1.0版(本文中的XML使用)中确实无效。。。因此,请您发表文章,澄清您希望执行的“验证”是什么(并不是说.Net不支持XML 1.1版,这将允许该字符)?我使用的是XML 1.0版,请发表这些信息,实际上不需要如此庞大的示例。。。一些夫妇小3行完整的例子应该足以澄清你个人想考虑的“有效”和“无效”类XML文件。在这样做之后,建议可能会沿着“使用更宽松的语法分析器,如HTMLaGraciPyPACK”,而不是像你所喜欢的那样去验证树……或者重新考虑你所考虑的“有效”。“并坚持使用XML 1.0规范-这将使与其他人合作更加容易,因为您不必每次都解释您的有效性规则。我已经编辑了plz,请向我发送一些代码的详细信息。@AlexeiLevenkovI尽力说服您使用XML。。。结果失败了。我对讨论/帮助编写类似XML的文本文件的解析器不感兴趣。。。我希望我在上面给出的关于使用HtmlAgilityPack的指导可以帮助。。。但是,我也不建议这样做,因为这会给其他人带来负担,他们最终可能会与您将要创建的代码进行交互,并且不得不处理类似XML的文本,而不是XML,这很痛苦。好运-文本解析是一个很好的技巧,所以你甚至可以考虑从头开始编写验证器来验证你喜欢的任何规则。