为了账号安全,请及时绑定邮箱和手机立即绑定

使用第一行文本值java获取第二行xml

使用第一行文本值java获取第二行xml

九州编程 2022-07-20 20:24:06
  public void loadSettings() {        try {            File inputFile = new File("data.xml");            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();            Document doc = dBuilder.parse(inputFile);            doc.getDocumentElement().normalize();            NodeList nList = doc.getElementsByTagName("Setting");            for (int temp = 0; temp < nList.getLength(); temp++) {                Node nNode = nList.item(temp);                if (nNode.getNodeType() == Node.ELEMENT_NODE) {                    Element eElement = (Element) nList.item(temp);                    NodeList  VariableName = eElement.getElementsByTagName("VariableName");                    NodeList  VariableValue = eElement.getElementsByTagName("VariableValue");                    System.out.println(VariableName.item(0).getTextContent());                    if (VariableName.item(0).hasChildNodes()) {                    }//                    txtBookmarkUrl.setText(bookMarkUrl);                }            }        } catch (Exception e) {            e.printStackTrace();        }    }我想创建一个函数,在设置元素中获取 xml 的第二部分。我希望该函数返回一个结果,以便在 swing GUI 启动时将其分配给文本字段默认值。该函数应该使用“isDecaptcher”变量名并返回“0”变量值。<Bookmark>  <Setting>    <VariableName>isDeathbycaptcha</VariableName>    <VariableValue>0</VariableValue>  </Setting>  <Setting>    <VariableName>isDecaptcher</VariableName>    <VariableValue>0</VariableValue>  </Setting>  <Setting>    <VariableName>isExpertdecoders</VariableName>    <VariableValue>0</VariableValue>  </Setting>  <Setting>    <VariableName>ManualCaptcha</VariableName>    <VariableValue>1</VariableValue>  </Setting></Bookmark>
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

public void loadSettings(String variableName) {


    try {

        File inputFile = new File("data.xml");

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();

        Document doc = dBuilder.parse(inputFile);

        doc.getDocumentElement().normalize();

        NodeList nList = doc.getElementsByTagName("Setting");

        for (int temp = 0; temp < nList.getLength(); temp++) {

            Node nNode = nList.item(temp);

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nList.item(temp);

                NodeList VariableName = eElement.getElementsByTagName("VariableName");

                NodeList VariableValue = eElement.getElementsByTagName("VariableValue");

                if (VariableName.item(0).getTextContent().equalsIgnoreCase(variableName)) {


                    String txtBookmarkUrlValue = VariableValue.item(0).getLastChild().getTextContent();

                    System.out.println(txtBookmarkUrlValue);

                    txtBookmarkUrl.setText(txtBookmarkUrlValue);

                }

            }

        }

    } catch (Exception e) {

        e.printStackTrace();

    }

}

这行得通,但是如果您有更可靠的答案,您可以分享。


查看完整回答
反对 回复 2022-07-20
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

首先创建一个代表您的设置的对象。案例是在整个应用程序中重用它的值。我假设您一开始只会使用一次,并且设置不会改变。单例模式适合那里。


final class Settings{


    private static volatile Settings instance = null;


    private boolean _isDeathByCaptcha;

    private boolean _manualCaptcha;


    ...

    //getters & setters

    public boolean isDeathByCaptcha(){

         return _isDeathByCaptcha;

    }


    public void setIsDeathByCaptcha(boolean isDeathByCaptcha){

         this._isDeathByCaptcha = isDeathByCaptcha;

    }


    private Settings(){}


    public static Settings getInstance(){

        if(instance == null){

            synchronized (Settings.class) {

                if (instance == null) {

                    instance = new Settings();

                }

            }

        }

        return instance;        

    }

}

之后,您可以致电Settings.getInstance().isDeathByCaptcha();获取您的价值。当然你需要用 setter 更早地设置它。


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信