我有一个令人费解的情况,用我正在访问的XML中的CDATA字符串。如何使用PowerShell在XML文件中获取CDATA中的值?
我访问XML API并在PowerShell中收集CDATA字符串。它像这样返回:
aggressorAllianceID: 99006227 aggressorCorpID: 244898283 aggressorID: 1283793762 armorValue: 1.0 hullValue: 1.0 moonID: 40043321 shieldValue: 0.5166110755741394 solarSystemID: 30000686 typeID: 20060
正如你所看到的那样有多行。我想收集这些变量,例如$aggressorAllianceID = 99006227
。
完整的XML是在这里:
<eveapi version="2">
<currentTime>2017-07-19 09:08:18</currentTime>
<result>
<rowset name="notifications" key="notificationID" columns="notificationID">
<row notificationID="644139237">
<![CDATA[
aggressorAllianceID: 99006227 aggressorCorpID: 244898283 aggressorID: 1283793762 armorValue: 1.0 hullValue: 1.0 moonID: 40043321 shieldValue: 0.5166110755741394 solarSystemID: 30000686 typeID: 20060
]]>
</row>
</rowset>
</result>
<cachedUntil>2027-07-17 09:08:18</cachedUntil>
</eveapi>
我已经tryed解析CDATA字符串分割命令,但我没有真正得到awhere?
任何人都可以提供一个他们如何访问和变量这个CDATA信息的例子吗?
这不是一个好主意,*所有*让一个程序用任意的,不可预知的名字创建变量。散列表的方法是要走的路。 – Tomalak
@Tomalak在我的代码中,我使用'New-Variable'和'Get-Variable'结合来存储和检索基于唯一ID的可预测数据。完全承认数据存储是我的一个薄弱环节,并且会在未来重构时尝试使用Ansgar的方法。这种方法对于OP的数据如此糟糕以至于可能会导致进一步的问题带来危害/引发? – gms0ulman
那么,任何自我修改的代码(以及在其运行的相同范围内创建变量的代码就是这样)是可用于攻击的(SQL注入或跨站点脚本是最突出的示例)或运行时的随机破坏因为现有变量很容易被覆盖。这将导致意外的程序行为。保持程序逻辑清洁并防止注入漏洞。 – Tomalak