如何获取 XML ArrayOfString 中的特定字符串?
How to get specific string in XML ArrayOfString?
我有一个由 VS 生成的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<applicationSettings>
<FMR.OrdersRouter.Service.Properties.Settings>
<setting name="UseSQL" serializeAs="String">
<value>True</value>
</setting>
<setting name="MaxNumOfConnectionsPerUser" serializeAs="String">
<value>10</value>
</setting>
<setting name="DataPath" serializeAs="String">
<value>C:\Program Files\Common Files\OrdersRouter</value>
</setting>
<setting name="CreditChecks" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>MAXMOFMARGIN:False</string>
<string>BRSMAXASHRAI:True</string>
<string>ADDCASH:False</string>
<string>BUYPOWER:True</string>
</ArrayOfString>
</value>
</setting>
<setting name="InternalOrdersRouterServerIP" serializeAs="String">
<value>172.25.2.186</value>
</setting>
</FMR.OrdersRouter.Service.Properties.Settings>
</applicationSettings>
</configuration>
我想从 ArrayOfString 中获取特定的字符串。我需要在 "MAXMOFMARGIN:" 或 "BRSMAXASHRAI:" 或 "ADDCASH:" 或 "BUYPOWER:"
之后获取值 True/False
我试过这个:
substring-after(/configuration/applicationSettings/FMR.OrdersRouter.Service.Properties.Settings/setting[@name="CreditChecks"]/value/ArrayOfString/string, 'BUYPOWER:')
但它仅适用于字符串数组中的第一个字符串。
有什么建议吗?
substring-after()
需要一个单例参数,因此当您的参数表达式 returns 多个值时,只会考虑第一个值。假设 string
值在给定的 ArrayOfString
中始终是唯一的,那么您可以这样做(简化路径只是为了给出一个易于阅读的示例):
substring-after(//ArrayOfString/string[contains(.,'BUYPOWER:')], 'BUYPOWER:')
XPath 作为 substring-after()
的第一个参数传递 string
包含文本 'BUYPOWER:'
的元素。
我有一个由 VS 生成的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<applicationSettings>
<FMR.OrdersRouter.Service.Properties.Settings>
<setting name="UseSQL" serializeAs="String">
<value>True</value>
</setting>
<setting name="MaxNumOfConnectionsPerUser" serializeAs="String">
<value>10</value>
</setting>
<setting name="DataPath" serializeAs="String">
<value>C:\Program Files\Common Files\OrdersRouter</value>
</setting>
<setting name="CreditChecks" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>MAXMOFMARGIN:False</string>
<string>BRSMAXASHRAI:True</string>
<string>ADDCASH:False</string>
<string>BUYPOWER:True</string>
</ArrayOfString>
</value>
</setting>
<setting name="InternalOrdersRouterServerIP" serializeAs="String">
<value>172.25.2.186</value>
</setting>
</FMR.OrdersRouter.Service.Properties.Settings>
</applicationSettings>
</configuration>
我想从 ArrayOfString 中获取特定的字符串。我需要在 "MAXMOFMARGIN:" 或 "BRSMAXASHRAI:" 或 "ADDCASH:" 或 "BUYPOWER:"
之后获取值 True/False我试过这个:
substring-after(/configuration/applicationSettings/FMR.OrdersRouter.Service.Properties.Settings/setting[@name="CreditChecks"]/value/ArrayOfString/string, 'BUYPOWER:')
但它仅适用于字符串数组中的第一个字符串。
有什么建议吗?
substring-after()
需要一个单例参数,因此当您的参数表达式 returns 多个值时,只会考虑第一个值。假设 string
值在给定的 ArrayOfString
中始终是唯一的,那么您可以这样做(简化路径只是为了给出一个易于阅读的示例):
substring-after(//ArrayOfString/string[contains(.,'BUYPOWER:')], 'BUYPOWER:')
XPath 作为 substring-after()
的第一个参数传递 string
包含文本 'BUYPOWER:'
的元素。