我有这个XML:
<Record>
<ID>123</ID>
<Question>Question goes here...</Question>
<Answer>Answer goes here...</Answer>
<ExtentedAnswer><?xml version="1.0" encoding="utf-16"?><ExtendedResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" DataType="12" xmlns="http://schemas.example.com/"><ComplexText><CityStateZip><City>Clifton</City><State>VA</State><Zip>20124</Zip><Country>US</Country></CityStateZip></ComplexText></ExtendedResponse></ExtentedAnswer>
</Record>
反序列化工作正常,但我将ExtentedAnswer作为字符串。是否可以一次性在ExtentedAnswer中反序列化XML。我知道我可以单独反序列化ExtentedAnswer。
答案 0 :(得分:3)
我们在工作场所解决了这个问题。在我们的具体情况下,问题是用XSLT转换文本,这是一个彻头彻尾的痛苦,但确实是可能的。在代码中,它不那么复杂,正如其他海报所建议的那样,只需替换<
和>
的转义码,并用普通的解析器解析它。
但是,您似乎需要一步到位的解决方案。我非常怀疑标准XML Serializer能够做到这一点,因为它不知道哪些元素包含转义的xml内容。转义文本专门用于阻止xml解析器检测它,因此手动解决方案可能是您唯一的选择。您的班级应该实施IXmlSerializable
并自行执行文字转换。
最后,我强烈建议您首先控制正在创建此数据的流程不存储转义的xml并找到其他解决方案。这是一种令人讨厌的工作,我无法想到任何真正必要的情况。
答案 1 :(得分:1)
您应该能够将&lt;
替换为<
字符,将&gt;
替换为>
字符。然后,这将为您提供一个可以与XML阅读器一起使用的字符串。
答案 2 :(得分:1)
是的,您可以这样做但 xml 应该存储 ExtentedAnswer ,如下所示: -
<ExtentedAnswer>
<![CDATA[
<?xml version="1.0" encoding="utf-16"?>
<ExtendedResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" DataType="12" xmlns="http://schemas.example.com/">
<ComplexText>
<CityStateZip>
<City>Clifton</City>
<State>VA</State>
<Zip>20124</Zip>
<Country>US</Country>
</CityStateZip>
</ComplexText>
</ExtendedResponse>
]]>
</ExtentedAnswer>
答案 3 :(得分:0)
如果你能成功的话,这是可能的。如果您只是在一个地方执行此操作,那么我会单独执行此操作,但如果您需要在许多地方执行此操作,那么您可以编写一个可以为您执行此操作的类,然后在您需要的任何地方使用它。 / p>