簡體   English   中英

用 java 解析 XML - 沒有得到所有的 xml 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM