[英]Parsing XML with java - does not get all xml values
嘗試解析 xml 以從此 XML 獲取“CreDtTm”標記值(粘貼不是整個):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>SANDISS_2020_10_08_001</MsgId>
<CreDtTm>2020-10-15T18:15:33</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>36.00</CtrlSum>
<InitgPty>
<Nm>Bank</Nm>
<Id>
<OrgId>
<Othr>
<Id>40100</Id>
<SchmeNm>
<Cd>COID</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
然而,並不是所有的值
下面是解析編輯xml的方法(寫回xml文件跳過atm)
public void modifyXmlFile(String filePath, Map<String, String> tagValuesToChange) {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document document = docBuilder.parse(filePath);
XPath xpath = XPathFactory.newInstance().newXPath();
for (Map.Entry<String, String> entry : tagValuesToChange.entrySet()) {
Node node = (Node) xpath.compile(entry.getKey()).evaluate(document, XPathConstants.NODE); //**This becomes null**
node.setTextContent(entry.getValue());
}
基本上沒有找到標簽並且節點變量設置為空。 不知道為什么? 你能幫我嗎?
運行您的示例讓我相信您在tagValuesToChange
Map 中的鍵是標簽的名稱,而不是有效的 XPath 表達式。 嘗試使用//CreDtTm
作為地圖的鍵,看看是否有效。
當我使用標簽名稱作為 Map 鍵時,我能夠重現NullPointerException
。 使用我建議的 XPath 表達式,代碼能夠找到節點並更新文本內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.