2016-02-25 8 views
0

Я работаю над Infopath с языком C#, и я пробую много времени, чтобы узнать, что значение узла узла использует XPathNavigator. Но результат не так, как я ожидаю. У меня есть XML-скрипт ниже:Как использовать XPathNavigator для чтения значения ожидаемого узла на языке InforPath C#?

<my:AuditInformation> 
<my:AuditQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>85</my:QuestionID> 
    <my:QuestionText>Loadout Note No.</my:QuestionText> 
    <my:QuestionAnswerTextbox>1</my:QuestionAnswerTextbox> 
    <my:QuestionAnswerValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
    <my:QuestionTypeID>3</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText>eg: 5AZA123456</my:QuestionTooltipText> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>87</my:QuestionID> 
    <my:QuestionText>Shipment Number</my:QuestionText> 
    <my:QuestionAnswerTextbox/> 
    <my:QuestionAnswerValue>2</my:QuestionAnswerValue> 
    <my:QuestionTypeID>1</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText/> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>88</my:QuestionID> 
    <my:QuestionText>Destination Port</my:QuestionText> 
    <my:QuestionAnswerTextbox>3</my:QuestionAnswerTextbox> 
    <my:QuestionAnswerValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
    <my:QuestionTypeID>3</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText/> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>100</my:QuestionID> 
    <my:QuestionText>Container ID</my:QuestionText> 
    <my:QuestionAnswerTextbox>56456</my:QuestionAnswerTextbox> 
    <my:QuestionAnswerValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
    <my:QuestionTypeID>3</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText>Container ID number</my:QuestionTooltipText> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>101</my:QuestionID> 
    <my:QuestionText>Container 2</my:QuestionText> 
    <my:QuestionAnswerTextbox>6</my:QuestionAnswerTextbox> 
    <my:QuestionAnswerValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
    <my:QuestionTypeID>3</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText/> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>102</my:QuestionID> 
    <my:QuestionText>Container 3</my:QuestionText> 
    <my:QuestionAnswerTextbox>7</my:QuestionAnswerTextbox> 
    <my:QuestionAnswerValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
    <my:QuestionTypeID>3</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText/> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
    <my:AuditInformationQuestions> 
    <my:QuestionID>322</my:QuestionID> 
    <my:QuestionText>Exporting KR, RE, IN</my:QuestionText> 
    <my:QuestionAnswerTextbox/> 
    <my:QuestionAnswerValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
    <my:QuestionTypeID>2</my:QuestionTypeID> 
    <my:AuditQuestionsYesNoSection> 
     <my:AuditQuestionYes>false</my:AuditQuestionYes> 
     <my:AuditQuestionNo>false</my:AuditQuestionNo> 
    </my:AuditQuestionsYesNoSection> 
    <my:QuestionTooltipText/> 
    <my:QuestionAnswerDropList>0</my:QuestionAnswerDropList> 
    </my:AuditInformationQuestions> 
</my:AuditQuestions> 

Я хочу, чтобы получить два значения из двух узлов:

<my:QuestionText>Container ID</my:QuestionText> 
<my:QuestionAnswerTextbox>56456</my:QuestionAnswerTextbox> 

Можете ли вы предоставить мне, как это сделать, если вы можете, пожалуйста, руководство меня или дать мне другой способ или решение сделать это?

Большое спасибо.

ответ

0

В этом XML-узле повторяются узлы, поэтому вам нужно использовать XPathNodeIterator и loop для прохождения этих узлов. Попробуйте это:

XPathNodeIterator auditInformationQuestionsNode = MainDataSource.CreateNavigator().Select("my:AuditQuestions/my:AuditInformationQuestions", NamespaceManager); 
foreach (XPathNavigator node in auditInformationQuestions) 
{ 
    string questionTextValue = node.SelectSingleNode("my:QuestionText", NamespaceManager).Value; 
    string questionAnswerTextboxValue = node.SelectSingleNode("my:QuestionAnswerTextbox", NamespaceManager).Value; 
} 

Вы получите то, что вам нужно внутри этих переменных: questionTextValue и questionAnswerTextbox.

Надеюсь, это будет полезно.

Примечание. Предположим, вы предоставляете только часть XML, поэтому ваш путь к моему: узел AuditInformationQuestions может быть другим. Вам нужно использовать полный путь для его получения.