【发布时间】:2016-04-20 01:35:14
【问题描述】:
更新:为每个请求添加了更多详细信息
我正在尝试为我的应用程序创建一个 xml 配置文件。该文件包含要在 html 文档中搜索和替换的条件列表。问题是,我需要搜索像&nbsp 这样的字符串。我不希望我的代码读取解码的项目,而是读取文本本身。
承认我对 XML 还很陌生,但我确实为满足要求做了一些尝试。我在 Stackoverflow 上阅读了大量关于 CDATA 和 ATTRIBUTES 等的链接,但这里(和其他地方)的示例似乎专注于在 xml 文件中创建单行,而不是多行。
这是我做了很多无济于事的尝试之一:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE item [
<!ELEMENT item (id, replacewith)>
<!ELEMENT id (#CDATA)>
<!ELEMENT replacewith (#CDATA)>
]>
]>
<item id=" " replacewith=" ">Non breaking space</item>
<item id="‑" replacewith="-">Non breaking hyphen</item>
这份文件给了我一些错误,包括:
- 在 DOCTYPE 中,出现
<!ELEMENT id (#CDATA)>之类的错误。在 CDATA 区域中,Visual Studio 通知我它需要一个“,”或“|”。 -
]>给我一个错误invalid token at the root of the document。 - 当然,在第二个
<item条目之后,我收到一条错误消息,指出XML document cannot contain multiple root level elements。
如何编写包含多个项目的 xml 文件并且允许我存储和检索元素内的文本,而不是解释的字符?
如果有帮助的话,我正在使用 .Net、C# 和 Visual Studio。
编辑:
此 xml 文件的目的是为我的代码提供要在 html 文件中搜索和替换的内容列表。 xml 文件只包含what to search for 和what to replace with 的列表。
这是我现在的文件:
<?xml version="1.0" encoding="utf-8" ?>
<Items>
<item id="‑" replacewith="-">Non breaking hyphen</item>
<item id=" " replacewith=" ">Non breaking hyphen</item>
</Items>
以第一个为例,我想阅读文本&#8209,但当我阅读此内容时,却得到-,因为这就是代码所代表的内容。
您可以提供的任何帮助或建议都会有所帮助。
【问题讨论】:
-
不清楚您想要达到的目标。您想查看的 valid XML 示例会有所帮助。如果您尝试使用字符串操作/正则表达式读取/写入 XML - 请停止这样做(或者至少不要在 SO 上询问它)。
-
我已经更新了更详细的描述和我正在使用的 xml 文件。基本上,我正在尝试编译要在 html 文件中搜索和替换的字符串列表。这些字符串可由用户配置,所以我想我会将它们存储在一个 xml 配置文件中。我基本上想将属性中包含的文本作为原始字符串而不是解码字符串来读取。
-
如果您想要文本,请对其进行编码。例如,NBSP 将是
&amp;nbsp; -
@Bill - 这种编码对你有用吗?我还在我的回答中添加了一个指向实体列表的链接,以防它对您有价值。
标签: c# xml visual-studio