【发布时间】:2016-10-21 09:02:03
【问题描述】:
刚刚遇到了一个新的 xml 问题,我对此不太了解。也许有人可以把我推向正确的方向:)
我有一个如下所示的 XML:
<import xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///XXXXXXXXX/TraumaSchema.xsd">
<creationDate>2016-10-18</creationDate>
<hospitalCode>XXXXXXXXXXXX</hospitalCode>
<importCasesWithErrors>0</importCasesWithErrors>
<caseState>1</caseState>
<caseList>
<case>
<patientCode>XXXXXXXXXXX</patientCode>
<internalPatientId>XXXXXXXXXXXXXXX</internalPatientId>
<masterData>
<patient>
<age/>
<sex>1</sex>
<asa>1</asa>
</patient>
<accident>
<cause>1</cause>
<trauma>1</trauma>
<dateTime>
<date>2016-05-15</date>
<time>01:30:00</time>
</dateTime>
</accident>
</masterData>
<preClinicalData>
<alarm>
<date>2016-05-15</date>
<time>02:00:00</time>
</alarm>
<arrival>
<date>2016-05-15</date>
<time>01:30:00</time>
</arrival>
<departure>
<date>2016-05-15</date>
<time/>
</departure>
<vitalSign>
<capnometry>0</capnometry>
<systolicBloodPressure>
<mmHg>140</mmHg>
</systolicBloodPressure>
<heartRate>
<perMinute>130</perMinute>
</heartRate>
<respiratoryRate>
<perMinute>20</perMinute>
</respiratoryRate>
<oxygenSaturation>
<percent>97</percent>
</oxygenSaturation>
</vitalSign>
....
....
....
</case>
<case>
....
....
....
XML 相当大,需要了解两件事。有一个元素“caseList”,其中包含可变数量的案例->“案例”。每个“case”都包含许多其他元素。焦点元素是“patientCode”,它包含在任何病例组中。
我需要实现的是从任何可能的子节点开始获取这个父元素“patientCode”。
我不知道我必须从层次结构的哪个位置开始。我唯一知道的是我需要得到这个特定的父母。
有人知道如何实现这一目标吗?
非常感谢任何帮助。
亲切的问候 桑德罗
【问题讨论】:
-
在 XDocument 中加载 xml。然后在这里查看接受的答案stackoverflow.com/questions/451950/get-the-xpath-to-an-xelement。然后在获得当前元素的路径后,搜索父元素并仅获取您需要的部分。
-
注意到我的问题文本中没有写某些文本 -> 已更正谢谢 Lidaranis,但这对我不起作用。我得到了一个巨大的路径列表,但我仍然有一个问题,我不知道起始点在哪里。请再看看我的问题
-
如果我明白这一点,请告诉我。您希望根据 case 元素的其中一个子元素来搜索 patientCode。例如,获取氧饱和度/百分比 == 97 的部分代码,但您的搜索所基于的节点(此处为氧饱和度/百分比)是动态的。我在正确的轨道上吗?
-
是的。 XML 已生成(序列化),因此我无法采用另一种 xml 生成方式。为了更好地理解这可能会有所帮助:用例是我针对 xsd 验证 xml。我编写了一个显示验证错误的应用程序。双击错误将在富文本框中标记导致错误的相关元素。我需要向用户显示属于所选元素(节点)的患者代码。在每种情况下,此信息都位于 PatientCode 元素中。所以你是绝对正确的:)
-
应用程序应该针对序列化的类而不是 xml 文件编写。您可以为每个指向父类的类添加一个私有属性。然后在执行序列化后运行一个实用程序来填写父项。私有属性被序列化忽略。