gpt4 book ai didi

c# - 我将如何解析可能格式错误的整个 XML 文件?

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:06 24 4
gpt4 key购买 nike

到目前为止,我正在做的是:

try 
{
XmlDocument xmldoc = loadXml(orderFilePath);
}
catch (XmlException exception)
{
//... blah blah - there was an error, let the user know
}

但无论如何,我真的很想能够尝试解析该文件。当我说“格式错误”时,我并不一定意味着会有一个未闭合的标签或元素,而是元素的值中可能包含以下内容之一:'<'、'>'、'&'

我看到周围有人提到我可能不得不使用 XmlReader - 但它仍然会在该元素上引发异常,还是允许我以某种方式解决问题?

我知道在源头修复 XML 是最好的解决方案,但我无法控制 XML 的来源。

谢谢!

编辑:

XML 的 super 简单示例:

<Order>
<Customer_ID>555-555-5555</Customer_ID>
<ShipToAddress>
<Customer_Name>Some Guy</Customer_Name>
<Street>123 Fake Dr.</Street>
<Street2></Street2>
<City>West Palm Beach</City>
<State>FL</State>
<ZipCode>33417</ZipCode>
<Country>United States</Country>
</ShipToAddress>
<BillToAddress>
<Customer_Name>Some Guy</Customer_Name>
<Street>123 Fake Dr.</Street>
<Street2></Street2>
<City>West Palm Beach</City>
<State>FL</State>
<ZipCode>33417</ZipCode>
<Country>United States</Country>
</BillToAddress>
<items>
<item>
<Product_ID>25101</Product_ID>
<Product_Name></Product_Name>
<Quantity>1</Quantity>
<USPrice>26.95000</USPrice>
</item>
</items>
<!-- bad stuff here -->
<How_did_you_hear_about_us>Coffee & Tea magazine</How_did_you_hear_about_us>
<!-- bad stuff here -->
</Order>

问题是 - 我不一定知道它是否会一直在同一个地方。

最佳答案

一种方法可能是在解析之前验证一些东西。您可以使用正则表达式来验证 XML 标记,但可能更容易的是 Stack你在哪里添加每个 <>符号上。之后只需遍历它并断言您不会连续两次获得相同的符号。

这就提出了一个问题:你如何区分<MyElement>><MyEl>ement>

虽然这一切都非常模糊:当 XML 被证明无效时,您希望发生什么?您希望将此预处理验证进行到什么程度?

我认为最好的选择是不继续。您无法解决抛给您的格式错误的 XML 的所有问题,通知用户并结束它可能会更好。

如果来源一直向您发送格式错误的 XML,您将不得不联系维护人员或寻找替代方案。

关于c# - 我将如何解析可能格式错误的整个 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com