目前我的功能只显示元素而不显示其属性。我不确定如何向元素添加属性。我可以在调试模式下查看所有元素,但需要具有属性的元素没有它们。
例如
我想看<Message MessageType="GetCodeListing" NodeID="1" ReferenceNumber="R-19293" UserID="8304" Source="IntegrationBroker">
,但我只看到<Message/>
,这意味着我需要将属性添加到此元素。
我该怎么做?
请注意,<Word ExactMatch='true'>07001G</Word>
Word
是一个变量,我不确定如何添加它。
我希望输出看起来像这样:
<Transaction ReferenceNumber="CC-Add-Appl-Doc-06292015_05" Source="IntegrationBroker" TransactionType="Multi">
<DataPropagation>
<IntraTxn xPath="/TxnResponse/Result[1]/Codes/Code/CodeID" ReplStr="#|CODEID|#"/>
</DataPropagation>
<Message MessageType="GetCodeListing" NodeID="1" ReferenceNumber="R-19293" UserID="8304" Source="IntegrationBroker">
<CodeTypeID>JUS136</CodeTypeID>
<Search>
<Word ExactMatch='true'>07001G</Word>
</Search>
</Message>
<Message MessageType="GetJudicialOfficerCode" NodeID="1" ReferenceNumber="R-19293" UserID="8304" Source="IntegrationBroker">
<CodeID>#|CODEID|#</CodeID>
</Message>
</Transaction>
我的函数创建一个新文档并在其中添加元素。我不确定如何向元素添加属性,这是我需要的帮助。
Function GetJudgeAPI(ByVal astrJudgeId As String) As XmlDocument
Dim objXmlOutPutDoc As XmlDocument
Dim objXmlTransactionDoc As XmlDocument
'Create Transaction message
objXmlTransactionDoc = New XmlDocument
objXmlTransactionDoc.AppendChild(objXmlTransactionDoc.CreateElement("Transaction"))
objXmlTransactionDoc.DocumentElement.SetAttribute("ReferenceNumber", System.Guid.NewGuid.ToString)
objXmlTransactionDoc.DocumentElement.SetAttribute("Source", "IntegrationBroker")
objXmlTransactionDoc.DocumentElement.SetAttribute("TransactionType", "Get Judge")
'Add Data Propagation
objXmlTransactionDoc.SelectSingleNode("Transaction").AppendChild(objXmlTransactionDoc.CreateElement("DataPropagation"))
objXmlTransactionDoc.SelectSingleNode("Transaction/DataPropagation").AppendChild(objXmlTransactionDoc.CreateElement("IntraTxn"))
'Add Message
objXmlTransactionDoc.SelectSingleNode("Transaction").AppendChild(objXmlTransactionDoc.CreateElement("Message"))
objXmlTransactionDoc.SelectSingleNode("Transaction/Message[1]").AppendChild(objXmlTransactionDoc.CreateElement("CodeTypeID"))
objXmlTransactionDoc.SelectSingleNode("Transaction/Message[1]/CodeTypeID").InnerText = "JUS136"
objXmlTransactionDoc.SelectSingleNode("/Transaction/Message[1]").AppendChild(objXmlTransactionDoc.CreateElement("Search"))
objXmlTransactionDoc.SelectSingleNode("Transaction/Message[1]/Search").AppendChild(objXmlTransactionDoc.CreateElement("Word"))
'Message 2
objXmlTransactionDoc.SelectSingleNode("Transaction").AppendChild(objXmlTransactionDoc.CreateElement("Message"))
objXmlTransactionDoc.SelectSingleNode("Transaction/Message[2]").AppendChild(objXmlTransactionDoc.CreateElement("CodeID"))
objXmlTransactionDoc.SelectSingleNode("Transaction/Message[2]/CodeID").InnerText = "#|CODEID|#"
End Function
答案 0 :(得分:0)
如果您能够切换到System.Xml.Linq
课程(LINQ to XML)和XML Literals:
Dim word As String = "07001G"
Dim xml As XElement =
<Transaction ReferenceNumber=<%= Guid.NewGuid().ToString() %> Source="IntegrationBroker" TransactionType="Multi">
<DataPropagation>
<IntraTxn xPath="/TxnResponse/Result[1]/Codes/Code/CodeID" ReplStr="#|CODEID|#"/>
</DataPropagation>
<Message MessageType="GetCodeListing" NodeID="1" ReferenceNumber="R-19293" UserID="8304" Source="IntegrationBroker">
<CodeTypeID>JUS136</CodeTypeID>
<Search>
<Word ExactMatch="true"><%= word %></Word>
</Search>
</Message>
<Message MessageType="GetJudicialOfficerCode" NodeID="1" ReferenceNumber="R-19293" UserID="8304" Source="IntegrationBroker">
<CodeID>#|CODEID|#</CodeID>
</Message>
</Transaction>
正如您所看到的,您可以使用<%= ... %>
语法在XML文字中嵌入表达式来执行变量替换,如上面针对ReferenceNumber
属性值和Word
使用的那样元素价值。它使得在VB.NET中处理XML变得更好(至少在我看来,我想其他人可能不喜欢在代码中嵌入XML!)。