问题标签 [xml-deserialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 从 SQL Server 2008 填充父 + 子对象(通过 XML?)
我有一个简单的 DAL,它由一个SalesEnquiry
对象组成,其中包括一个List<T>
对象Vehicle
,用于处理传入的查询 (XML) 并将它们写入数据库。到现在为止还挺好。
但是,我正在编写另一个应用程序来进一步处理这个数据库中的数据,所以我想使用这些相同的 DAL 对象来检索和操作数据。
与其返回传统的记录集并遍历它们,手动填充 SalesEnquiry/Vehicle 对象的每个属性,我认为我可以将 SQL Server 中的数据作为 XML 返回并对其进行反序列化。我已经使用这种技术来处理传入的数据。
但是,我不确定是否/如何在 SQL Server 中构造适当的 XML,或者是否必须分两个阶段进行。
以下会将查询提取为 XML:
以下将提取相关车辆作为 XML:
我所追求的结果 XML 是:
我可以在 SQL Server 中创建它,还是必须在我的 DAL 中手动执行此操作?
更新:
根据 Shunty 的建议,我正在使用以下内容:
..我可以靠近,但我不完全在那里:
为了成功反序列化,我需要我的元素位于父元素<vehicle>
之下。<vehicles>
必须有一种方法来鼓励 SQL 制作正确的 XML……
.net - XmlSerializer 将具有空字符串的属性反序列化为零
我想使用 XmlSerializer 并将具有空字符串值的属性反序列化为整数的零。我看到的关于使用空字符串反序列化属性的每个问题都涉及将可空整数设置为空 - 但我想将不可空整数设置为零,而不是空。
有没有什么简单的方法可以做到这一点而不实现 IXmlSerializable 并且只自己处理它?
c# - 仅序列化数据的反序列化失败,为什么?
我正在尝试在 Silverlight 中序列化和反序列化对象,但似乎无法使其正常工作。序列化工作得很好,但它抱怨我的 rootObject 不是预期的。我不明白,因为生成 XML 的是 Silverlight。
顺便提一句; 我还是 C# 的新手
我有一个看起来像这样的类:
当 Silverlight 序列化时,它会产生:
但是,当我尝试反序列化时,它会产生:
System.InvalidOperationException 未被用户代码处理 Message=XML 文档中存在错误 (2, 2)。
InnerException: System.InvalidOperationException Message= <DataStorage xmlns=''
> 不是预期的。
我的反序列化代码如下:
任何想法?
c# - 在反序列化期间使用 XML 装饰指定默认值
我在反序列化某些 XML 时遇到问题;第三方提供的 XML 非常冗长,因此如果没有为特定元素设置值,它将提供和空元素(例如<element1 />
)。
这对于某些元素来说是一个问题,例如那些旨在存储整数的元素。我可以控制第三方,所以我可以让他们指定一个默认值 ( <myinteger>0</myinteger>
),或者我可以让他们完全忽略这些元素。这两个都应该避免这个问题。
但是,将来可能会出现我们没有太多控制权的情况——在这种情况下,有没有办法指定一个默认值,也许是通过装饰?
java - 加载 XML 非常慢
我继承了一个数据存储,它使用简单的文本文件来保存文档。
文档有一些属性(日期、标题和文本),它们被编码在一个文件名中:<date>-<title>.txt,文件的主体是文本。
然而实际上系统中的文档有更多的属性,甚至更多的再次被提议添加。
切换到 XML 格式似乎是合乎逻辑的,我已经这样做了,现在每个文档都编码在它自己的 XML 文件中。
然而,从 XML 中读取文件现在非常慢!(以前 .txt 格式的 2000 篇文章需要几秒钟,现在 .xml 格式的 2000 篇文章需要 10 多分钟)。
我使用的是 DOM 解析器,在发现读取速度有多慢后,我切换到了 SAX 解析器,但它仍然很慢(嗯,更快,但仍然是 10 分钟)。
XML 就是这么慢,还是我在做一些奇怪的事情?任何想法将不胜感激。
该系统是用 JavaSE 1.6 编写的。解析器是这样创建的:
c# - 您如何反序列化 Transunion XML?
这是我的尝试,xsd 和从 xsd.exe 创建的类
运行我的代码时出现错误“XML 文档 (1、2) 中存在错误”。内部异常 {" 不是预期的。"}
任何帮助将不胜感激。
谢谢!
XML 片段:
XSD 片段:
类片段:
代码片段:
c# - 有点不平凡的数据结构:XmlSerializer 适合我吗?
我目前正在使用XmlSerializer
,令人惊讶的是:),处理我的数据结构的反序列化 - 我发现它非常易于使用,但以灵活性为代价。目前,我将它用于基于树的结构;由于XmlSerializer
不处理循环结构,我已添加[XmlIgnore]
到我的Parent
属性中,并在树上进行后反序列化迭代以修复节点父节点。
有没有更好的方法来处理这个问题XmlSerializer
,还是用重写代码会更好XmlReader/XmlWriter
?我想实施IXmlSerializable
会奏效,但这似乎是相当多的工作,同时仍然保留XmlSerializer
.
当前的后反序列化步骤没问题,但是我添加了一个必须序列化到单独的 XML 文件的数据结构:基本上是一个平面列表,需要一个 Parent 属性来引用先前树结构中的一个节点。这将需要一个后反序列化步骤,以及在新数据结构中保留 Parent 属性和 ParentId(或一些技巧)。
那么,有什么聪明(且不脆弱)的想法吗?或者XmlReader/XmlWriter
它是?
解决方案
DataContractSerializer
结果证明是一个相当不错的解决方案,其简单性与 XmlSerializer 几乎相同。我选择不使用自动循环处理,而是定义和OnDeserialized装饰方法来处理设置父节点;这样,生成的 XML 就符合标准。
让我困惑一段时间的一件事是,在反序列化后我在某些属性上崩溃了,支持成员设置为 null - 无法弄清楚这是怎么可能的,因为支持成员肯定在所有可能的构造函数中初始化。调试显示从未调用过构造函数,经过一番谷歌搜索后,我发现这个 SO 帖子有解释。
java - 将 XML 数据直接解组到对象中
我正在尝试使用 SimpleXML 从 Java 中的 XML 对象中解组数据。整个事情的重点是将 API 从 JAXB 转换为 SimpleXML。因此,我使用了解析文档的注解方式。这是一些代码:
在用户类中:
编写 API 的程序员使用 DateAdapter 将直接从 XML 中提取的字符串转换为日期。我试图将其转换为 SimpleXML。我的假设是 Transformer 使用了相同的方法。这是之前和之后的代码......
前:
后:
我认为我做错了转换,因为我现在遇到了不可解析的日期错误。奇怪的是,即使我将 if-else 或 try-catch 块放在 read 和 write 方法中,我仍然会收到错误。
所以我认为主要问题是,我如何正确地编写一个像 JAXB 这样的适配器来编组/解组 XML 中的字符串和 Date 对象。
c# - Child Xml Element is not Deserializing
The Problem
I have an issue when I deserialize my xml, one of the child elements is not being deserialized. It is null in the class instance despite being populated in the xml.
A little Background
I used XsdObjectGenerator to create poco classes based on my .xsd. I was then able to deserialize the xml into a class instance and work with the objects.
I modifed the autogenerated classes by wrapping them in a namespace called 'TFS'.
At a certain point in the project, I found it necessary to place one of the child elements in it's own namespace called 'COM'.
The next time I attempted to deserialized the xml into a class instance, the child element is not being deserialized.
Here is the pertinent snippet of TFS class code with the child element namespace changed to COM. It also includes the parent element OrdDtl which remains in the TFS namespace.
Here is the AcctSetup declaration in the COM namespace which is contained in it's own file:
and here is my deserialize function:
Any assistance in getting the COM.AcctSetup element to deserialize is very much appreciated. Let me know if you need additional info or code samples.
java - 从 Java 文件中解组 SOAP 信封
我想对映射/翻译由 wsimport 生成的 Web 服务类型到我自己的域对象的映射器对象进行单元测试。我还想测试错误场景,例如 SOAP 错误等,我认为最好在真实的 SOAP 响应上测试映射器对象。我不想向 Web 服务本身发出请求,因为这需要访问 Web 服务,并且会为每个测试带来往返时间。
鉴于这种情况,我试图从包含 SOAP 信封的特定 XML 文件中解组 SOAP 消息。我想解组 SOAP 信封,然后将正文中的有效负载转换为相应的 Java 类型。
我已经设法通过使用 JAXB 解组来解组有效负载本身,但是我还没有找到一种方法来允许我处理具有类似 SOAP 错误的 SOAP 响应。
有没有一种给定 SOAP Envelope XML 文件的方法可以让我以简单的方式测试我的映射器?