首页
\
问答
\
peoplecode中的LoadXMLString函数未按预期工作(LoadXMLString function in peoplecode not working as expected)
peoplecode中的LoadXMLString函数未按预期工作(LoadXMLString function in peoplecode not working as expected)
我正在使用一个外部服务,它返回一个XML,它与peoplesoft中的服务操作生成的XML完全相同。 因此,我使用了loadXMLStrin函数,如下所述。 但是,只有一个字段被复制到行集。 我不知道什么是错的。
这是代码。
&msgAddrResp = CreateMessage(Operation.FG_ADDR_RESP); &msgAddrResp.LoadXMLString(&sXML); &rsFgAddrStndRespWr = &msgAddrResp.GetRowset();
这是XML
<?xml version="1.0"?> <FG_ADDR_RESP2> <FieldTypes> <FG_ADDR_RESP_WR class="R"> <cmid type="NUMBER"/> <AddressLine1 type="CHAR"/> <City type="CHAR"/> <State type="CHAR"/> <PostalCode type="CHAR"/> <TimeZone type="CHAR"/> <InCityLimit type="CHAR"/> </FG_ADDR_RESP_WR> <PSCAMA class="R"> <LANGUAGE_CD type="CHAR"/> <AUDIT_ACTN type="CHAR"/> <BASE_LANGUAGE_CD type="CHAR"/> <MSG_SEQ_FLG type="CHAR"/> <PROCESS_INSTANCE type="NUMBER"/> <PUBLISH_RULE_ID type="CHAR"/> <MSGNODENAME type="CHAR"/> </PSCAMA> </FieldTypes> <MsgData> <Transaction> <FG_ADDR_RESP_WR class="R"> <cmid IsChanged="Y">0</cmid> <AddressLine1 IsChanged="Y">xxxxx<AddressLine1/> <City IsChanged="Y">xxxxxxxxx<City/> <State IsChanged="Y">xx<State/> <PostalCode IsChanged="Y">xxxxxxx<PostalCode/> <TimeZone IsChanged="Y">xxx<TimeZone/> <InCityLimit IsChanged="Y">x<InCityLimit/> </FG_ADDR_RESP_WR> <PSCAMA class="R"> <LANGUAGE_CD>ENG<LANGUAGE_CD/> <AUDIT_ACTN><AUDIT_ACTN/> <BASE_LANGUAGE_CD>ENG<BASE_LANGUAGE_CD/> <MSG_SEQ_FLG><MSG_SEQ_FLG/> <PROCESS_INSTANCE>0</PROCESS_INSTANCE/> <PUBLISH_RULE_ID><PUBLISH_RULE_ID/> <MSGNODENAME><MSGNODENAME/> </PSCAMA> </Transaction> </MsgData> </FG_ADDR_RESP2>
I am working with an external service which returns an XML which is exactly equal to the XML generated from a service operation in peoplesoft. Therefore, I used loadXMLStrin function as mentioned below. But, only one field is copied to the rowset. I dont know whats wrong.
Here is the code.
&msgAddrResp = CreateMessage(Operation.FG_ADDR_RESP); &msgAddrResp.LoadXMLString(&sXML); &rsFgAddrStndRespWr = &msgAddrResp.GetRowset();
Here is the XML
<?xml version="1.0"?> <FG_ADDR_RESP2> <FieldTypes> <FG_ADDR_RESP_WR class="R"> <cmid type="NUMBER"/> <AddressLine1 type="CHAR"/> <City type="CHAR"/> <State type="CHAR"/> <PostalCode type="CHAR"/> <TimeZone type="CHAR"/> <InCityLimit type="CHAR"/> </FG_ADDR_RESP_WR> <PSCAMA class="R"> <LANGUAGE_CD type="CHAR"/> <AUDIT_ACTN type="CHAR"/> <BASE_LANGUAGE_CD type="CHAR"/> <MSG_SEQ_FLG type="CHAR"/> <PROCESS_INSTANCE type="NUMBER"/> <PUBLISH_RULE_ID type="CHAR"/> <MSGNODENAME type="CHAR"/> </PSCAMA> </FieldTypes> <MsgData> <Transaction> <FG_ADDR_RESP_WR class="R"> <cmid IsChanged="Y">0</cmid> <AddressLine1 IsChanged="Y">xxxxx<AddressLine1/> <City IsChanged="Y">xxxxxxxxx<City/> <State IsChanged="Y">xx<State/> <PostalCode IsChanged="Y">xxxxxxx<PostalCode/> <TimeZone IsChanged="Y">xxx<TimeZone/> <InCityLimit IsChanged="Y">x<InCityLimit/> </FG_ADDR_RESP_WR> <PSCAMA class="R"> <LANGUAGE_CD>ENG<LANGUAGE_CD/> <AUDIT_ACTN><AUDIT_ACTN/> <BASE_LANGUAGE_CD>ENG<BASE_LANGUAGE_CD/> <MSG_SEQ_FLG><MSG_SEQ_FLG/> <PROCESS_INSTANCE>0</PROCESS_INSTANCE/> <PUBLISH_RULE_ID><PUBLISH_RULE_ID/> <MSGNODENAME><MSGNODENAME/> </PSCAMA> </Transaction> </MsgData> </FG_ADDR_RESP2>
原文:https://stackoverflow.com/questions/21887481
更新时间:2023-02-01 19:02
最满意答案
将您的节点投射到一个Element,并且您很好。
Cast your node to an Element, and you're good to go.
相关问答
更多-
获取一个dom节点的属性(Get an attribute of a dom node)[2023-05-20]
你的节点是一个元素,所以你只需要 Element e = (Element)node; String name = e.getAttribute("name"); Your node is an Element so you just have to Element e = (Element)node; String name = e.getAttribute("name"); -
你只想获得一个属性的值,是吗? 在这种情况下,这很容易: scala> val x =
x: scala.xml.Elem = scala> x.attribute("this") res0: Option[Seq[scala.xml.Node]] = Some(xx) scala> x.attribute("this").get.toString res1: String = xx ... -
如何在XOM中访问不是XML标记的节点的子元素?(How to access a child Element of a node that is not an XML tag in XOM?)[2022-10-27]
如果你有done Element节点,那么done.getChild(0)会给你一个Text节点,你可以调用getValue()来获得一个带有=的String 。 If you have the done Element node, then done.getChild(0) would give you a Text node and which you can call getValue() to get a String with =. -
获取xml节点属性取决于同一节点的其他属性(Get xml node attribute depending on other attribute of the same node)[2023-07-27]
假设您的xml文档有一个根节点: var reportid = sitemap.Descendants("node") .Where(el => el.Attribute("id").Value == "630") .Select(el => el.Attribute("reportid").Value) .FirstOrDefault(); // or, lookup of ... -
用XOM编写GraphML?(Writing GraphML with XOM?)[2022-03-07]
这应该做到这一点。 基本上,您没有为xsi:schemaLocation属性提供名称空间URI。 因此,尝试创建一个没有命名空间的前缀属性,这显然不起作用。 root.addAttribute(new Attribute("xsi:schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", "http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org ... -
在XOM中查询节点(Query Node in XOM)[2024-03-27]
当您的查询以单斜杠开头时,这将查找具有给定名称的文档根节点。 相反,两个斜杠意味着查找给定名称的所有祖先。 如果您只是省略前导斜杠,您的查询应该有效: Nodes innerNodes = node.query("Value1"); When your query starts with a single slash then this looks for the document root node with the given name. Two slashes in contrast means t ... -
XOM从节点获取属性?(XOM getting attribute from Node?)[2021-12-04]
将您的节点投射到一个Element,并且您很好。 Cast your node to an Element, and you're good to go. -
您可以使用getAttribute()方法实现此目的。 例: foreach($nodeLIST as $node) { $attribute = $node->getAttribute('class'); if($attribute == 'title') { // do something } elseif ($attribute == 'child') { // do something } } You can achieve this ...
-
XPath / getChildElements都无法在XOM中获取XML子级(Both XPath/getChildElements failed to get XML child in XOM)[2022-11-06]
我打赌这是一个xmlns问题 - 你尝试过使用domain参数吗? 尝试: document.getRootElement .getChildElements("ListRecords", "http://www.openarchives.org/OAI/2.0/").size 基本上,许多语言,当在XML对象上给出默认ns时,将要求该命名空间查找该节点 - 即使它在输出的DOM本身中没有前缀。 (这也可以使用XPathConte ... -
NodeList nodeList = doc.getElementsByTagName("city"); for (int i = 0; i < nodeList.getLength(); i++) { String id = nodeList.item(i).getAttributes().getNamedItem("id").getTextContent(); // do something with 'id' String cityName ...