【发布时间】:2020-12-22 18:47:01
【问题描述】:
我试图从一个 .xml 文件中复制一定“范围”的元素并将它们“粘贴”到另一个文件中。我正在使用 REGEX 从一个 .xml 复制“范围”。这部分工作正常。
Public Function ParseCalibrationFile(ByVal ocalcFile As String) Implements IXmlServices.ParseCalibrationFile
Dim poleImages As String = Nothing
Try
Dim imageData As String = File.ReadAllText(ocalcFile.ToString)
poleImages = Regex.Match(imageData, "((?s) <PoleImages>(.*?) <\/PoleImages>)", RegexOptions.IgnoreCase).Value.ToString
Catch ex As Exception
Omitted on purpose
End Try
Return poleImages
End Function
这会将poleImages 作为下面列出的字符串返回,这正是我所需要的。这部分效果很好。
当我将其粘贴到其他 .xml 时,格式“被吹散”了。我得到以下信息,请注意 PoleImages 应该位于 PPLChildElements 下方的下一行:
我目前正在使用 XmlTextWriter 创建我的 .xml。并使用 WriteString 来“粘贴”复制的信息。我尝试了其他一些没有运气的事情。 WiteCData 让我最接近,保持格式,但显然我不能使用它。
有人对如何更好地“粘贴”这个有任何建议吗?
【问题讨论】:
-
你在粘贴什么?什么编辑器?看起来 XML 就像内容一样被转义,而不是被视为 XML。您可能只是考虑在您的代码中执行此操作,以避免某些编辑器对内容进行更改。祝你好运。
-
解析 XML 的方法只有一种,那就是 XML 解析器。任何使用 XML 正则表达式的解决方案(提取信息或修改 XML 源)都是错误的。使用 XML API(例如 .NET 的
System.Xml.XmlDocument)加载和修改输入文档。 -
@Tomalak 谢谢,你能给我一些关于如何做到这一点的例子/教程吗?我是编写 XML 的新手。我尝试粘贴的 XML 是使用 XML API 创建的。 99% 我是从代码中创建的。最后一部分是将此“复制”部分添加到通过代码创建的内容的末尾。不幸的是,我不能“硬”编码它,因为它每次都不一样。
-
您必须展示更多代码。只要您仍在使用 XML,就不应将其转换为带有
XmlTextWriter的字符串,就像您目前正在做的那样。您应该将其保留为XmlDocument或您正在使用的任何内容。在 .NET 中如何使用 XML 的例子不胜枚举,你不需要我给你指出一个。