C# 如何解析包含非xml数据的xml

C# 如何解析包含非xml数据的xml,c#,.net,xml,serialization,C#,.net,Xml,Serialization,我正在使用C#中的一些xml,由于xml文件的格式,在解析xml文件时遇到了一些问题。文件中有非xml数据,我无法控制该文件的格式。该文件为“test.xml”(见下文)。我只关心数据的xml部分,但不确定访问它的最佳方式。如有任何想法或建议,将不胜感激 Test data -1 Smith, 2234 @@*j Random-- @<?xml version="1.0" encoding="utf-16"?> <ConfigMessage xmlns:xsi="http

我正在使用C#中的一些xml,由于xml文件的格式,在解析xml文件时遇到了一些问题。文件中有非xml数据,我无法控制该文件的格式。该文件为“test.xml”(见下文)。我只关心数据的xml部分,但不确定访问它的最佳方式。如有任何想法或建议,将不胜感激

Test data -1
Smith, 2234

@@*j

Random--

@<?xml version="1.0" encoding="utf-16"?>
<ConfigMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.Test.com/schemas/Test.test.Config">
  <Config>
    <Version>10</Version>
    <Build>00520</Build>
    <EnableV>false</EnableV>
    <BuildL>22</BuildL>
    <BuildP>\\testpath\test</BuildP>
  </Config>
</ConfigMessage>
@
测试数据-1
史密斯,2234
@@*j
随机的--
@
10
00520
假的
22
\\testpath\test
@

将整个文件放入一个字符串中,该字符串包含在文件中检测到的第一个“”字符内的任何内容。然后,您可以将其视为普通XML。如果整个文件中有随机的非XML元素,则需要添加额外的逻辑来检测启动/停止XML“块”。

将整个文件放入一个字符串中,该字符串包含在文件上检测到的第一个“”字符内的任何内容。然后,您可以将其视为普通XML。如果有随机的非XML元素贯穿其中,那么您需要添加额外的逻辑来检测启动/停止XML“块”。

我可以建议您这样的解决方案:打开类似伪XML的简单文本文件,阅读全文,然后使用正则表达式,您应该获取XML文档(原始文档的一部分,可以转换为XML[|startTag |任意符号|/endTag |]),将其放入XDocument(内存中),然后像XML文件一样解析它。

我可以建议您这样的解决方案:打开类似伪XML的简单文本文件,读取整个文本,然后使用正则表达式读取XML文档(原始文档的一部分,可以转换为XML[|startTag |任意符号|/endTag |]),将其放入XDocument(内存中),然后像XML文件一样解析它。

您必须手动执行。找到XML的开始和结束位置,并将字符串精简为该位置。我不会将其描述为“包含非XML数据的XML”。我将其描述为一个包含XML数据的非XML文件。关于非XML容器的格式,您给出的唯一线索是一个示例,它不足以得出任何一般规则,但您基本上需要提取XML部分,然后将其发送给XML解析器。感谢您的建议,Michael。我同意您的结论。。。关于文件类型,从技术上讲,它是一个xml文件(.xml),其中确实包含非xml数据。您必须手动执行此操作。找到xml的开始和结束位置,并将字符串精简为该位置。我不会将此描述为“包含非xml数据的xml”。我将其描述为一个包含XML数据的非XML文件。关于非XML容器的格式,您给出的唯一线索是一个示例,它不足以得出任何一般规则,但您基本上需要提取XML部分,然后将其发送给XML解析器。感谢您的建议,Michael。我同意您的结论。。。关于文件类型,从技术上讲,它是一个xml文件(.xml),其中确实包含非xml数据。