0

我在尝试解析使用 C# 中的 Axis Java Web 服务生成的 XML 文件时遇到了一些问题。该文件具有以下格式:

<ns:getAcctsDetailResponse xmlns:ns="http://paymentdata.com">
    <ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax21="http://paymentdata.com/xsd" xsi:type="ax21:AcctsDetail">
    <ax21:Status>15</ax21:Status>
    <ax21:Name>John James</ax21:Name>
</ns:return>
</ns:getCustomerAcctsDetailResponse>

我使用下面的代码尝试访问所需的元素,但得到以下错误:

':' 字符,十六进制值 0x3A,不能包含在名称中。

XDocument xDoc = XDocument.Load(xml);
string accountName= xDoc.Root.Element("ns:return").Element("ax21:Name").Value;

对你的帮助表示感谢。

4

1 回答 1

0

我看到两个问题:

首先,该 XML 格式不正确。开始标签与结束标签ns:getAcctsDetailResponse不匹配ns:getCustomerAcctsDetailResponse。也许这是一个错字?

其次,您需要为命名空间做一些特殊的事情。尝试这样的事情:

XNamespace ns = "http://paymentdata.com"; 
XNamespace ax21 = "http://paymentdata.com/xsd";

XDocument xDoc = XDocument.Load(xml); 
string accountName = xDoc.Root.Element(ns + "return")
  .Element(ax21 + "Name").Value;
于 2013-04-03T22:54:01.560 回答