我知道有很多同样的问题,但我无法解决这个问题。
我有一个XMLDocument,我需要迭代这些值。
<InfoResponse xmlns="">
<ns1:ID xmlns:ns1="http://www.svt.si/evlog">2399237000/03-069-1-41/2023</ns1:ID>
<ns1:ID xmlns:ns1="http://www.svt.si/evlog">2399237000/03-069-1-42/2023</ns1:ID>
</InfoResponse>
我尝试过IEnumerable、XmlNodelist、List,但总是得到相同的结果。
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(response);
String test = xmlDocument.InnerText;
退货
2399237000/03-069-1-41/20232399237000/03-069-1-42/2023
我需要一个数组或列表,这样我就可以迭代并执行下一个操作。
我尝试了建议的解决方案
How do I read and parse an XML file in C#?
但结果是一样的。我认为问题在于它们都有相同的节点名称/id。
编辑
正如建议的那样,命名空间ns1可能没有定义,所以这是我得到的整个字符串响应:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<InfoResponse xmlns="">
<ns1:ID xmlns:ns1="http://www.svt.si/evlog">2399237000/03-069-1-41/2023</ns1:ID>
<ns1:ID xmlns:ns1="http://www.svt.si/evlog">2399237000/03-069-1-42/2023</ns1:ID>
</InfoResponse>
</soap:Body>
</soap:Envelope>
这个回答可以吗?
我在foreach中添加了建议的解决方案——目前我不确定我是否正确地完成了它:
string[] strArray = XElement.Parse(response)
.Elements()
.Select(d => d.Value)
.ToArray();
foreach (string xn in strArray)
{
Logger.LogInfo("ID: " + xn);
}
现在返回2个元素-一个为空,另一个同时具有这两个值。
编辑2
string[] strArray = XElement.Parse(soapResponse)
.Descendants("InfoResponse")
.Elements()
.Select(d => d.Value)
.ToArray();
返回一个空数组。。