Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用从Java到XML文件的Xpath表达式创建基本换行符_Java_Xml_Xpath_Carriage Return - Fatal编程技术网

使用从Java到XML文件的Xpath表达式创建基本换行符

使用从Java到XML文件的Xpath表达式创建基本换行符,java,xml,xpath,carriage-return,Java,Xml,Xpath,Carriage Return,通过学习如何编程堆栈溢出提供了丰富的信息,也是学习如何解决不同问题的主要途径。然而,对于这个问题,在搜索了几天之后,我空手而归,我决定创建我的第一篇帖子 问题在于,使用Xpath的Node.setTextContent从java字符串在XML文件中创建多行值。它将写入Xpath报告为元素节点的XML文件中的值标记。现在,当将字符串值写入节点时,它确实会将字符串值写入节点,但是它只是一个长字符串值,因为根据API的setTextContent方法不会解析字符串中的任何内容,而只是写入文本。我试图写

通过学习如何编程堆栈溢出提供了丰富的信息,也是学习如何解决不同问题的主要途径。然而,对于这个问题,在搜索了几天之后,我空手而归,我决定创建我的第一篇帖子

问题在于,使用Xpath的Node.setTextContent从java字符串在XML文件中创建多行值。它将写入Xpath报告为元素节点的XML文件中的值标记。现在,当将字符串值写入节点时,它确实会将字符串值写入节点,但是它只是一个长字符串值,因为根据API的setTextContent方法不会解析字符串中的任何内容,而只是写入文本。我试图写的数据的一个例子是:(编辑2-16,刚刚注意到格式选项没有显示主帖子)格式如下,街道、城邦和电话按如下信息分解(行间没有空格),以匹配第一个xml代码示例中列出的格式

维维德大街496号

某个城市,州,11111

111-222-3333

将java字符串写入xml文件时,其输入为: 州某市生动大道496号,111111111-222-3333

从父程序(不是我的java应用程序)创建的节点示例如下:

如果有人对如何让Java字符串包含setTextContent可以识别的换行符有任何想法,我会通知他。我曾尝试使用文本规范化和空白数据,但不确定如何实现,也不确定这些方法是否会从setTextContent方法中剥离出来


谢谢你的帮助!我希望我的问题足够清楚,不会被激怒

我找到了一个xpather cheetsheet,其中显示了正则表达式中的特殊字符,而Xpath不会插入换行符的Unicode值,它确实识别了新行,现在地址块的格式正确了。

“它所做的只是输入代码值,而不是值。”你能举个例子吗?在父程序中,地址的读取方式与上面列出的value元素中的地址相同。因此,父程序将地址读取到地址框中,地址为496 Vivid Ave.Some City,State,11111 111-222-3333,放在一行中,word将其按其认为合适的方式包装,而不是在父程序中创建时,在第一组XML代码中,地址/电话号码的格式与XML代码中的格式相同。。。在上面的xml示例中,父程序读取中断,并显示与xml代码完全相同的内容。。这有意义吗?是的,我只是想知道你所说的“prting the code values”是什么意思?这是什么样子?我不知道如何更简洁:(我正在使用的应用程序是自动化我们在工作中所做的一些表单创建,因此在父程序中,当您键入street addy并点击return键时,它会向下移动一行,然后您键入city、state zip,然后点击return键并输入电话号码。当父程序保存xml文件时,它会输入值。)元素,无论您在框中键入什么,这是上面的第一组xml代码,请注意格式,其中每一组代码后面都有换行符。当使用my app和Xpath,设置节点文本值以保存数据时,它仅从单个字符串中提取。该字符串从数据库中提取,并且是存储数据的单个字符串如第二组xml代码中的示例所示,在xml值元素中的一行中显示地址。当在父程序中打开该xml文件时,它将地址值呈现为该值元素中列出的地址值,因此它将带边框分隔符的地址呈现为单个连续值。并将其显示为单个值,不带换行符格式。
<field sid="ADDRESS">
     <itemlocation>
        <ae>
           <ae>absolute</ae>
           <ae>33</ae>
           <ae>168</ae>
        </ae>
     </itemlocation>
     <value>496 Vivid Ave.
Some City, State, 11111
111-222-3333</value>
     <borderwidth>0</borderwidth>
     <fontinfo>
        <ae>Times New Roman</ae>
        <ae>10</ae>
        <ae>plain</ae>
     </fontinfo>
     <scrollhoriz>wordwrap</scrollhoriz>
     <scrollvert>fixed</scrollvert>
     <format>
        <ae>string</ae>
        <ae>optional</ae>
     </format>
     <acclabel>6.  leave address.
enter street, city, state, zip code and phone number.
</acclabel>
     <size>
        <ae>35</ae>
        <ae>3</ae>
     </size>
     <previous>FIELD5</previous>
     <next>ORDINARY</next>
  </field>
<field sid="ADDRESS">
     <itemlocation>
        <ae>
           <ae>absolute</ae>
           <ae>33</ae>
           <ae>168</ae>
        </ae>
     </itemlocation>
     <value>496 Vivid Ave. Some City, State, 11111 111-222-3333</value>
     <borderwidth>0</borderwidth>
     <fontinfo>
        <ae>Times New Roman</ae>
        <ae>10</ae>
        <ae>plain</ae>
     </fontinfo>
     <scrollhoriz>wordwrap</scrollhoriz>
     <scrollvert>fixed</scrollvert>
     <format>
        <ae>string</ae>
        <ae>optional</ae>
     </format>
     <acclabel>6.  leave address.
enter street, city, state, zip code and phone number.
</acclabel>
     <size>
        <ae>35</ae>
        <ae>3</ae>
     </size>
     <previous>FIELD5</previous>
     <next>ORDINARY</next>
  </field>
public void setFieldValue(String sid, String value){
    Node resultNode = null;
    XPath xPath = XPathFactory.newInstance().newXPath();

    try{

        resultNode = (Node)xPath.evaluate(makeFieldString(sid), doc,XPathConstants.NODE);

    }catch(XPathExpressionException xpee){System.out.println(xpee + "Could not retrive node");}
     if (resultNode != null){

        resultNode.setTextContent(value);

    }
    else System.out.println("Epic fail");

    }

public String makeFieldString(String sid){
    String output=null;
    if (sid.equals("POPUP2")){
        output="//popup[@sid='" + sid + "']/value";
    }

    else{
       output=  "//field[@sid='" + sid + "']/value";
    }
    return output;
}