如何使用JAVA在XML中设置属性值

如何使用JAVA在XML中设置属性值,java,xml,attributes,Java,Xml,Attributes,我想在xpath为://Trade[@cancel]的xml中设置一个属性值。之前设置了什么值并不重要,但应该设置我发送的任何值 我遇到的问题是:org.apache.xml.dtm.ref.DTMNodeList.setAttribute()方法没有签名。setAttribute()适用于参数类型:(java.lang.String,java.lang.String)值:[取消,true]第26行错误 甚至我也不想传递属性cancel的现有值:(“//Trade[@cancel='true']

我想在xpath为://Trade[@cancel]的xml中设置一个属性值。之前设置了什么值并不重要,但应该设置我发送的任何值

我遇到的问题是:org.apache.xml.dtm.ref.DTMNodeList.setAttribute()方法没有签名。setAttribute()适用于参数类型:(java.lang.String,java.lang.String)值:[取消,true]第26行错误

甚至我也不想传递属性cancel的现有值:(“//Trade[@cancel='true']” 但我想设置一些值以取消。如何操作

enter code here

def file = """<DATA>
  <ASSET tid="4" AssetType="Loan">
    <Identifier tdes="FCSAstID" id="26415" />
    <Identifier tdes="CUSIP" id="13134MBN2" />
    <TRADEGROUP referenceticketid="YYasdfg"  />
    <TRADE LtdEventPubId="374104" Isname="true" cancel="false" value="30" positiontype="Assignment" quantity="50000.0000000000" >

    </TRADE>
</DATA>"""



Document doc = DocumentBuilderFactory.newInstance()
        .newDocumentBuilder().parse(file);

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList  nodes = (NodeList)xpath.evaluate("//Trade[@cancel='true']",doc, 
XPathConstants.NODESET);

nodes.setAttribute("cancel","true")
在此处输入代码
def file=“”
"""
Document doc=DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(文件);
XPath=XPathFactory.newInstance().newXPath();
NodeList节点=(NodeList)xpath.evaluate(“//Trade[@cancel='true']”,doc,
XPathConstants.NODESET);
nodes.setAttribute(“取消”、“真”)

基于HTML,没有与XPath匹配的元素
//Trade[@cancel='true']
。有一个元素与XPath
//Trade[@cancel='false']匹配
,但是。我怀疑这可能是问题所在。请阅读文档。顾名思义,A是XML节点列表。NodeList没有方法setAttribute()。这就是错误消息的原因。您应该从NodeList(方法项())中提取节点,并将每个节点强制转换为元素。有方法setAttribute(字符串,字符串)。如果有不清楚的地方,请查看文档并搜索教程。@natn2323是一个打字错误。这不是问题。@Vanje我不擅长java。您能提供一个解决方案/代码,我可以用来更新//trade[@cancel]但我不想发送其中的原始值。而且,当我使用变量传递xpath时,它也无法识别。