鉴于以下内容:
- <ArrayOfWsParcelDocIndexIAS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsParcelDocIndexIAS>
<locatorNum xmlns="http://xxx/webservices/wsDocumentIndex/">131312</locatorNum>
<docType xmlns="http://xxx/webservices/wsDocumentIndex/">KIOOLX_DOCINDEX</docType>
<docID xmlns="http://xxx/webservices/wsDocumentIndex/">234234</docID>
<docName xmlns="http://xxx/webservices/wsDocumentIndex/">Document - 7/1/2008</docName>
<fileExists xmlns="http://xxx/webservices/wsDocumentIndex/">true</fileExists>
<fileFormat xmlns="http://xxx/webservices/wsDocumentIndex/">PDF</fileFormat>
</wsParcelDocIndexIAS>
- <wsParcelDocIndexIAS>
<locatorNum xmlns="http://xxx/webservices/wsDocumentIndex/">131312</locatorNum>
我正在尝试使用
检索每个元素var documentElements = from docels in root.Elements("wsParcelDocIndexIAS") select docels;
然后
foreach (XElement documentElement in documentElements)
{
XElement id = documentElement.Element("locatorNum");
XElement file_type = documentElement.Element("fileFormat");
然而,当id和file_type为null时,我使用的语法是尝试获取它们的值。
我在这里做错了什么?
由于
答案 0 :(得分:2)
您没有指定命名空间。试试这个:
XNamespace ns = "http://xxx/webservices/wsDocumentIndex/";
foreach (XElement documentElement in documentElements)
{
XElement id = documentElement.Element(ns + "locatorNum");
XElement file_type = documentElement.Element(ns + "fileFormat");
...
}
答案 1 :(得分:1)
XML中的元素位于命名空间"http://xxx/webservices/wsDocumentIndex/"
中,但是您为Element
方法提供的名称不是。您需要使用XName
和名称创建namespace(此处有一个重载的+
运算符):
XNamespace ns = "http://xxx/webservices/wsDocumentIndex/";
foreach (XElement documentElement in documentElements)
{
XElement id = documentElement.Element(ns + "locatorNum");
XElement file_type = documentElement.Element(ns + "fileFormat");
// ...