c# - 清理无效的 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>
必须以同样的方式对待
解决方案
您可以尝试使用 XML Parser。它会让你在所有这些文件中得到你需要的东西。然后,您可以创建一个新的,其中包含您需要的任何数据。
您可以从:https ://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xdocument.parse?view=net-5.0
推荐阅读
- python - 未找到 Python 请求页面
- excel-formula - 如何在 Excel 中获取 HLOOKUP 的所有匹配项的总和?
- reactjs - 如何将数据传递给流星方法?
- elasticsearch - 填充字段时映射器解析异常
- java - 测试正在运行两次并且没有关闭
- xml - 无法在 SoapUI 中调用请求 - 不明确的方法重载
- android - 我无法理解这个“marge manifest”错误
- php - 从php中的数组中删除包含空格和新行的元素
- sql - 根据不匹配的日期字段连接两个表
- ibm-doors - 通过批处理模式运行脚本时出现 DXL 错误。(堆栈下溢)