Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何读取具有名称空间值的XML元素_C#_Xml - Fatal编程技术网

C# 如何读取具有名称空间值的XML元素

C# 如何读取具有名称空间值的XML元素,c#,xml,C#,Xml,如果xml元素有名称空间,则在获取xml元素值时会遇到问题。请帮助我这里有什么问题。下面是我的xml字符串 <PurchaseOrder xmlns:aw="http://www.adventure-works.com"> <aw:ShippingAddress> <aw:Name>John</aw:Name> <aw:Street>123 Main St.</aw:Street> <aw:City>Seattl

如果xml元素有名称空间,则在获取xml元素值时会遇到问题。请帮助我这里有什么问题。下面是我的xml字符串

<PurchaseOrder xmlns:aw="http://www.adventure-works.com"> <aw:ShippingAddress> <aw:Name>John</aw:Name> <aw:Street>123 Main St.</aw:Street> <aw:City>Seattle</aw:City> <aw:State>WA</aw:State> <aw:Zip>98113</aw:Zip> <aw:Country>USA</aw:Country> </aw:ShippingAddress> <aw:ShippingAddress> <aw:Name>Chris Preston</aw:Name> <aw:Street>123 Robin St.</aw:Street> <aw:City>Newyork</aw:City> <aw:State>TU</aw:State> <aw:Zip>98113</aw:Zip> <aw:Country>USA</aw:Country> </aw:ShippingAddress> <aw:ShippingAddress> <aw:Name>Charlis</aw:Name> <aw:Street>53 Jacob St.</aw:Street> <aw:City>California</aw:City> <aw:State>DOWNTOWN</aw:State> <aw:Zip>98111</aw:Zip> <aw:Country>USA</aw:Country> </aw:ShippingAddress> </aw:PurchaseOrder>
John 123 Main St.Seattle WA 98113 USA Chris Preston 123 Robin St.Newyork TU 98113 USA Charlis 53 Jacob St.California闹市区98111 USA
我的代码在下面

XDocument doc = XDocument.Load("PurchaseOrder.xml");
List<PurchaseOrder> listWO = new List<PurchaseOrder>();

 foreach (XElement el in doc.Root.Elements())
{
    if ( el.Elements().Count() > 0)
        {
        PurchaseOrder po = new PurchaseOrder
        {
            Name = el.Elements("aw:Name").First().Value,
            City = el.Elements("aw:City").First().Value,
            Country = el.Elements("aw:Country").First().Value
        };
        listPO.Add(po):
    }
 }
XDocument doc=XDocument.Load(“PurchaseOrder.xml”);
List listWO=新列表();
foreach(doc.Root.Elements()中的XElement el)
{
如果(el.Elements().Count()>0)
{
采购订单po=新采购订单
{
Name=el.Elements(“aw:Name”).First()值,
City=el.Elements(“aw:City”).First()值,
Country=el.Elements(“aw:Country”).First()值
};
listPO.Add(采购订单):
}
}
在这里,我没有得到每个“ShippingAddress”的值

请参见以下更改:

            XDocument doc = XDocument.Load("PurchaseOrder.xml");
            XNamespace awNs = doc.Root.GetNamespaceOfPrefix("aw");
            List<PurchaseOrder> listWO = new List<PurchaseOrder>();

             foreach (XElement el in doc.Root.Elements())
            {
                if ( el.Elements().Count() > 0)
                    {
                    PurchaseOrder po = new PurchaseOrder
                    {
                        Name = el.Elements(awNs + "Name").First().Value,
                        City = el.Elements(awNs + "City").First().Value,
                        Country = el.Elements(awNs + "Country").First().Value
                    };
                    listPO.Add(po):
                }
             }
XDocument doc=XDocument.Load(“PurchaseOrder.xml”);
XNamespace awNs=doc.Root.GetNamespaceOfPrefix(“aw”);
List listWO=新列表();
foreach(doc.Root.Elements()中的XElement el)
{
如果(el.Elements().Count()>0)
{
采购订单po=新采购订单
{
Name=el.Elements(awNs+“Name”).First().Value,
城市=el.Elements(芒+城市”).First()值,
国家=el.元素(芒+国家”).First()值
};
listPO.Add(采购订单):
}
}

这是否回答了您的问题?