我有一个带SOAP接口的程序。我得到的XML在某些元素名称中有'#'符号。我该如何解决这个问题?
这是XML文件的片段。我列出了“ID4”和“ID5”的片段。 “ID3”到“ID20”有相同的元素。这些片段被Envelope和Body标签包围:
<ns0:ArrayOfOption id="ID2" xsi:type="enc:Array" enc:arrayType="ns0:Option[18]">
<item href="#ID4" />
<item href="#ID5" />
</ns0:ArrayOfOption>
<ns0:Option id="ID4" xsi:type="ns0:Option">
<name xsi:type="xsd:string">lps</name>
<value xsi:type="xsd:string">en_es,es_en</value>
</ns0:Option>
<ns0:Option id="ID5" xsi:type="ns0:Option">
<name xsi:type="xsd:string">license.tr.tm</name>
<value xsi:type="xsd:string">1</value>
</ns0:Option>
这是脚本的片段。 :
[xml]$ex = get-content example.xml
for each ($i in $ex.Envelope.Body.Option){
$i.name
$i.value
}
这是输出:
type #text
---- ----
xsd:string lps
ID4
xsd:string license.tr.tm
ID5
使用PowerGUI,它给出了对象及其属性的图形视图,我看到每个元素都有一个属性名称“#text”,带有哈希符号。 两个问题: 1)为什么#text字段有一个'#'符号?我和开发人员保持联系;我可以要求他们更改源代码(Java)中的某些内容以将其删除吗?
2)假设我无法移除它,我该如何解决它?如果我想将值和名称分配给变量,我不能输入:
for each ($i in $ex.Envelope.Body.Option){
$name = $i.name.#text
$value = $i.value.#text
}
有什么建议吗?
答案 0 :(得分:3)
要访问#text
属性,请将属性名称放在引号中,例如:
$name = $i.name.'#text'
$value = $i.value.'#text'