首页 > 解决方案 > 清理无效的 xml 字符串,使其有效 xml

问题描述

我有一个无效的 xml 文件(由多个 xml 文件的串联产生)。是否可以从此处清除不需要的重复节点(root 和 xml):

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Client>client1</Client>
    <ClientType>1</ClientType>
</root><?xml version="1.0">
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Client>client2</Client>
</root><?xml version="1.0" encoding="utf-8"?>
<root>
    <Client>client3</Client>    
</root>

到这里 :

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Client>client1</Client>
    <ClientType>1</ClientType>
    <Client>client2</Client>
    <Sex>1</Sex>
    <Client>client3</Client>
    <Sex>1</Sex>
</root>

我已经开始使用正则表达式来查找“xml”和“root”的出现,

var test = Regex.Matches(input, "<\\?xml").Count;

但我有两个困难:1/删除除第一个和最后一个之外的所有根节点。(也许使用 IndexOf 函数?) 2/ 管理稍微不同的节点,例如

 <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <root>

必须以同样的方式对待

标签: c#xmlstring

解决方案


您可以尝试使用 XML Parser。它会让你在所有这些文件中得到你需要的东西。然后,您可以创建一个新的,其中包含您需要的任何数据。

您可以从:https ://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xdocument.parse?view=net-5.0


推荐阅读