Xpath и XmlNameSpace - PullRequest
       9

Xpath и XmlNameSpace

4 голосов
/ 13 мая 2009

У меня есть следующий XML

<?xml version="1.0"?>
<FileHeader 
  xmlns="urn:schemas-ncr-com:ECPIX:CXF:FileStructure:020001" 
  VersionNumber="020001" 
  TestFileIndicator="P" 
  CreationDate="13012009" 
  CreationTime="172852" 
  FileID="0000000001"
>
  <Item 
    ItemSeqNo="09011340010009" 
    PayorBankRoutNo="00704524" 
    Amount="398000" 
    AccountNo="000003850010205" 
    SerialNo="000512" 
    TransCode="03"
    PresentingBankRoutNo="00400019" 
    PresentmentDate="13012009" 
    CycleNo="01" 
    NumOfImageViews="2" 
    ClearingType="01" 
    DocType="D" 
    CurrencyInd="LYD" 
    IQAIgnoreInd="0" 
    CashValueInd="1" 
    TruncatingRTNo="00405117" 
    SpecialHandling="00" 
    RepresentmentCnt="0" 
    MICRRepairFlags="000000"
  >
    <AddendA 
      BOFDRoutNo="00400019" 
      BOFDBusDate="13012009" 
      DepositorAcct="0000534983"
    />
    <ImageViewDetail ...

И мне нужно добраться до элемента «ImageViewDetail», используя метод Select (xpath_expression) класса XmlDocument .NET.

Следующий код не работает

xmlDocument.Select("//Item/AddendA/ImageViewDetail");

если я не удалю

xmlns="urn:schemas-ncr-com:ECPIX:CXF:FileStructure:020001"

из тега "FileHeader"

Как правильно обращаться с пространством имен здесь?

Спасибо,

Ответы [ 2 ]

5 голосов
/ 13 мая 2009

С XmlNamespaceManager и псевдонимом в xpath:

    XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
    mgr.AddNamespace("x", doc.DocumentElement.NamespaceURI);
    foreach (XmlNode node in doc.SelectNodes(
          "//x:Item/x:AddendA/x:ImageViewDetail", mgr))
    {
        Console.WriteLine(node.OuterXml);
    }
0 голосов
/ 13 мая 2009

Отметьте http://www.vijaymukhi.com/documents/books/csclasses/chap7.htm Вы можете найти что-то, что может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...