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 如何在使用xpath读取后将xml值写入csv文件_Java_Xml_Csv_Xpath - Fatal编程技术网

Java 如何在使用xpath读取后将xml值写入csv文件

Java 如何在使用xpath读取后将xml值写入csv文件,java,xml,csv,xpath,Java,Xml,Csv,Xpath,我正在处理一个xml文件,其值必须作为输出写入csv文件中,我能够读取xml文件,但无法使用该值生成csv文件,我给出了xml和java代码,我到目前为止所做的工作 <?xml version="1.0" ?> <ThirdParty> <Name>Karen Wallace</Name> <Phone>785-296-7829</Phone> <State>KS</State> <A

我正在处理一个xml文件,其值必须作为输出写入csv文件中,我能够读取xml文件,但无法使用该值生成csv文件,我给出了xml和java代码,我到目前为止所做的工作

<?xml version="1.0" ?>
<ThirdParty>
 <Name>Karen Wallace</Name> 
 <Phone>785-296-7829</Phone> 
<State>KS</State> 
<Address1>420 SW 9th Street</Address1> 
 <pxObjClass>PCore-Compliance-Commsys-Data-ThirdParty</pxObjClass> 
<Zip>66612</Zip> 
<City>Topeka</City> 
 </ThirdParty>

每个标记都将是标题列,其值将位于其下方。

CSV代表逗号分隔的值,因此您需要在行中包含逗号分隔符才能写入,这样看起来就像这样(假设您执行了所有资源分解、节点检查等操作):

bw.write(“姓名、电话、州、地址1、pxObjClass、邮编、城市”);
对于(int i=0;i
几个问题:xml中的
pyTemporaryObject
在哪里?为什么有重复的代码(见末尾)?您需要关闭
BufferedWriter
,所有代码都应该在
try..catch
中。请发布正确的输入。我得到..org.apache.xerces.dom.DeferredTextImpl与org.w3c.dom.Element不兼容在哪一行?Element Element Element=(Element)节点此行
public class Main {

public static void main(String[] args) throws XPathExpressionException, SAXException, IOException, ParserConfigurationException {

  Writer writer = new OutputStreamWriter(new FileOutputStream("src/main/resources/pathToFile"), "UTF-8");
  BufferedWriter bw = new BufferedWriter(writer);   
  DocumentBuilderFactory domFactory = 
  DocumentBuilderFactory.newInstance();
  domFactory.setNamespaceAware(true); 
  DocumentBuilder builder = domFactory.newDocumentBuilder();
  Document doc = builder.parse("src/main/resources/new.xml");
  XPath xpath = XPathFactory.newInstance().newXPath();
   // XPath Query for showing all nodes value

      XPathExpression expr = xpath.compile("pagedata/ThirdParty/*/text()");
      String pyTemporaryObject = null ,line = null;
  Object result = expr.evaluate(doc, XPathConstants.NODESET);
  NodeList nodes = (NodeList) result;
  for (int i = 0; i < nodes.getLength(); i++) {

  System.out.println(nodes.item(i).getNodeValue()); // this line prints the output.

   // this piece of code I have tried to write into a csv which did not worked

          Node node = nodes.item(i);                                
          Element element = (Element) node;
          pyTemporaryObject = element.getElementsByTagName("pyTemporaryObject").item(0).getTextContent();
          line  = String.format("%s", pyTemporaryObject);
          System.out.println(pyTemporaryObject);
          bw.write(line);
          bw.newLine();
          bw.flush();Node node = nodes.item(i);


          Element element = (Element) node;
          pyTemporaryObject = element.getElementsByTagName("pyTemporaryObject").item(0).getTextContent();
          line  = String.format("%s", pyTemporaryObject);
          System.out.println(pyTemporaryObject);
          bw.write(line);
          bw.newLine();
          bw.flush();



   }
     }
 } 
Name   |   Phone    |    State  |   Address1  |       pxObjClass  |             Zip  | City

Karen Wallace | 785-296-7829 | KS |  420 SW 9th Street | PCore-Compliance-Commsys-Data-ThirdParty | 66612 | Topeka
bw.write("Name,Phone,State,Address1,pxObjClass,Zip,City");

for (int i = 0; i < nodes.getLength(); i++) {
{
    Node node = nodes.item(i);                                
    Element element = (Element) node;
    String name = element.getElementsByTagName("Name").item(0).getTextContent();
    String phone = element.getElementsByTagName("Phone").item(0).getTextContent();
    String state = element.getElementsByTagName("State").item(0).getTextContent();
    String address1 = element.getElementsByTagName("Address1").item(0).getTextContent();
    String pxObjClass = element.getElementsByTagName("pxObjClass").item(0).getTextContent();
    String zip = element.getElementsByTagName("Zip").item(0).getTextContent();
    String city = element.getElementsByTagName("City").item(0).getTextContent();

line  = String.format("%s,%s,%s,%s,%s,%s,%s", name,phone,state,address1,pxObjClass,zip,city);
bw.write(line);
bw.newLine();
bw.flush();
}