我正在尝试使用 Linq 来解析存储在字符串中的 XML 片段。这是 XML:
<rule name="U.S. Financial: PCI">
<keyValues>
<keyValue key="id" value="3421c776-c95f-4ed2-915b-a684b97ae06b" />
<keyValue key="minCount" value="1" />
</keyValues>
</rule>
当我尝试解析 XML 时,我从 <rule>
的名称属性中的空格中得到一个错误元素。我的解析代码如下:
XDocument doc = XDocument.Parse("<wrapper>" + xml + "</wrapper>", LoadOptions.PreserveWhitespace);
但是我在没有 LoadOption 的情况下得到了同样的错误。确切的错误是:
An unhandled exception of type 'System.Xml.XmlException' occurred in System.Xml.dll. Additional information: 'U.S.' is an unexpected token. Expecting white space. Line 1, position 24.
我如何使用 Linq 解析像这样包含空格的属性,以及为什么我必须用“包装器”元素包围 xml 才能使其工作?
编辑: 进一步调查后,我认为该错误实际上是由于 Linq 在 <rule>
的结束标记之前发现它不知道如何解析的内容引起的。元素。嵌套在 <rule>
element 是另一个包含编辑值的元素,其格式中包含尖括号(但它不是 XML 元素)。删除后,XML 会正常解析,不再需要 <wrapper>
元素。
这些经过编辑的值在我正在使用的 XML 中非常常见。如果我无法解析它们的 XML,我该如何系统地替换/删除它们(我不需要它们)?编辑后的值在 XML 中如下所示:
<argument>
<value>
<PII:H101(n5tSfjvfgkgVvZ2scBE9fdv2ui7O4A74R0OvGkR208Y=)>@gmail.com</value>
</argument>
最佳答案
以下代码已经过测试并且可以正常工作。 如果它存储为字符串,则您的问题可能出在双引号中。
如果您的问题仍然存在,您必须向我们提供有关如何将此 XML 提取为字符串的更多信息。
string xml = "<rule name='U.S. Financial: PCI'> <keyValues> <keyValue key='id' value='3421c776-c95f-4ed2-915b-a684b97ae06b' /> <keyValue key='minCount' value='1' /> </keyValues></rule>";
XDocument doc = XDocument.Parse( xml);
关于c# - 使用 Linq 解析包含尖括号的值的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34961878/