【发布时间】:2019-03-12 22:30:34
【问题描述】:
我有一个 XML 文件,我需要在主进程之前做一些替换,所以我使用StringBuilder 逐行读取并进行必要的更改。其中之一如下:
我的字符串是:
<para>This<brk/>is<brk/>a<brk/>bold tag.</para> // Simple Input
我将每个分隔成一个新行。所以每个都是:
<para>This</para>
<para>is</para>
<para>a</para>
<para>bold tag.</para>
现在,如果我在 <para> 标记中有 <bold> 或 <italic> 标记,那么理想情况下应该是:
<para><bold>This<brk/>is<brk/>a<brk/>bold tag.</bold></para> // Main Input
但在我的情况下,我必须将每一行分隔成单独的行,所以这将是无效的语法。根据我的要求,应该是:
<para><bold>This</bold><brk/><bold>is</bold><brk/><bold>a</bold><brk/><bold>bold tag.</bold></para> // Required Input
如何检查每个<brk/> 标签以确保每个<brk/> 都被<bold><brk/></bold> 替换。
问题是<bold> 标签可以出现在字符串中的任何位置。例如:
<para><bold>This</bold> again<brk/> is<brk/><bold> a <brk/>paragraph</bold></para> // Another Input
现在,如果我根据我使用的拆分规则拆分它,它将变为:
<para><bold>This</bold>again</para>
<para>is</para>
<para><bold>a</para> // Line 1
<para>bold tag.</bold></para> // Line 2
Line 1 和 Line 2 是无效的 XML 行。
在这种情况下,输出将是:
<para><bold>This</bold> again<brk/> is<brk/><bold> a </bold><brk/><bold>paragraph</bold></para>.
如果我不进行此替换,XML 将无效,因为我必须在每个 <brk/> 标记处将字符串拆分为新行。
【问题讨论】:
-
除非您使用蹩脚的第三方接口,否则没有必要将 XML 节点分隔在不同的行中。 .NET XML 相关类工作正常,没有换行符。
-
实际上,我正在开发一个应用程序,这是必需的,所以我将一个 XML 文件作为输入并检查一些标签。然后,我将根据需要更换它们。这是要求之一。
-
this 有帮助吗?我不确定是否理解您的问题。
-
为什么不使用与 XML 相关的类?通过递归和替换 XML 节点内部文本,
<brk/>逻辑可以相当容易地完成。 -
@PrimoChalice 我会仔细检查您的要求,因为单行 XML 与格式良好的 XML...它仍然是有效的 XML