【发布时间】:2017-01-27 19:10:59
【问题描述】:
我有一个在字段中返回一些 XML 的存储过程调用。还有其他字段返回 XML,但只返回其中的一个元素。这个新字段将包含多个元素,需要遍历这些元素才能为最终用户显示字符串。
以下是将返回的 XML 示例:
<Superbills>
<Superbill>
<SuperBillID>1</SuperBillID>
<EventDate>2004-03-23T13:24:16</EventDate>
<ProcCodes>
<ProcCode>27096</ProcCode>
<ProcCode>76005</ProcCode>
<ProcCode>A4550</ProcCode>
<ProcCode>A4641</ProcCode>
<ProcCode>J3301</ProcCode>
</ProcCodes>
</Superbill>
<Superbill>
<SuperBillID>2</SuperBillID>
<EventDate>2004-03-23T13:24:16</EventDate>
<ProcCodes>
<ProcCode>27096</ProcCode>
<ProcCode>76005</ProcCode>
<ProcCode>A4550</ProcCode>
<ProcCode>A4641</ProcCode>
<ProcCode>J3301</ProcCode>
</ProcCodes>
</Superbill>
<Superbill>
<SuperBillID>3</SuperBillID>
<EventDate>2004-03-24T13:24:16</EventDate>
<ProcCodes>
<ProcCode>27096</ProcCode>
<ProcCode>76005</ProcCode>
<ProcCode>A4550</ProcCode>
<ProcCode>A4641</ProcCode>
<ProcCode>J3301</ProcCode>
</ProcCodes>
</Superbill>
</Superbills>
我需要能够遍历所有 Superbill 集以输出类似于以下内容的内容:
[EventDate] ([ProcCode], [ProcCode], [ProcCode], [ProcCode], [ProcCode])
[EventDate] ([ProcCode], [ProcCode], [ProcCode], [ProcCode], [ProcCode])
基本上,我需要为 Superbill 集中的每个 ProcCodes 构建一个逗号分隔的字符串,并解析出事件日期为每个构建一个字符串。
我尝试过查看using XmlReader,但这并没有为我提供每个“Superbill”元素的单独行。它最终只给了我一起活动的日期,然后给了我ProcCodes。
感谢您的任何意见。
【问题讨论】:
-
你试过什么?您是否有一些代码可以说明您在反序列化 xml 时遇到的问题?
-
添加了使用 xmlreader 的尝试。
-
使用 XmlDocument.loadXML(strXML)。然后写一个XSL来输出你需要的字段。
-
或者不使用XSL,使用XmlDocment.loadXML,然后在selectNodes方法中使用类似“//Superbill”的XPath来遍历每一个。
-
XmlReader用于这样的任务很痛苦。从 XML 创建和XmlDocument并使用 XPath 选择元素或创建XDocument并使用 Linq2Xml 提取您需要的内容。