我试图使用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>
元素的name属性中的空格中得到错误。我的解析代码如下:
XDocument doc = XDocument.Parse("<wrapper>" + xml + "</wrapper>", LoadOptions.PreserveWhitespace);
但是没有LoadOption我得到了同样的错误。确切的错误是:
未处理的类型&#39; System.Xml.XmlException&#39;发生在System.Xml.dll中。附加信息:&#39;美国&#39;是一个意外的令牌。期待白色空间。第1行,第24位。
我如何使用Linq解析包含空格的这样的属性,并且有任何理由我必须使用&#34;包装器&#34;来包围xml。使它运作的元素?
编辑:经过进一步调查后,我认为该错误实际上是由Linq发现的,它不知道如何在<rule>
元素的结束标记之前解析。嵌套在<rule>
元素中的是包含编辑值的其他元素,其格式中包含尖括号(但它不是XML元素)。删除后,XML会正常解析,不再需要<wrapper>
个元素。
这些编辑后的值在我工作的XML中非常常见。如果我无法解析XML,那我怎么能系统地替换/删除它们(我不需要)他们)?编辑后的值在XML中如下所示:
<argument>
<value>
<PII:H101(n5tSfjvfgkgVvZ2scBE9fdv2ui7O4A74R0OvGkR208Y=)>@gmail.com</value>
</argument>
答案 0 :(得分:0)
以下代码已经过测试并且运行正常。 如果它存储为字符串,则您的问题可能在双引号中。
如果您的问题仍然存在,则必须向我们提供有关如何将此XML拉入字符串的更多信息。
WHERE NOT user_id IN ('1', '2', '3') AND thread_id = tm.thread_id)
答案 1 :(得分:0)
为了使输入字符串可读,我使用这种格式
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>";