導航:首頁 > 編程大全 > bin轉xml工具

bin轉xml工具

發布時間:2023-08-27 06:54:00

1. 任意文件批量轉換成XML格式

如果你會編程的話這個應該不難的,建一個DirectoryInfo 對象獲取到A路徑,然後利用DirectoryInfo.GetFiles()獲取到A文件夾中的文件,最後循環生成xml就行了,我用的C#,不會VB

DirectoryInfo dif = new DirectoryInfo();
FileInfo[] fi = dif.GetFiles(".PDN文件類型");

foreach (FileInfo f in fi)
{
string fileName = f.Name;//用來做xml的文件名

/*****************

創建xml文件並保存,也就是你上邊的單個生成xml文件的程序

****************/

}

//執行完成,大功告成!

希望能對你有所幫助

2. 如何生成xml文件

樓主,xml文件不是生成的,是自己編寫成的,現在又很多編寫xml文件的軟體,你可以網路一下,還有編寫xml文件要有很多約束,比如說是schma(這個單詞估計錯了)約束,dtd約束等等,你可以上網查查

3. java XML解析詳解

(I)Java通過解析XML

1>得到DOM解析器的工廠實例
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
得到javax.xml.parsers.DocumentBuilderFactory;類的實例就是我們要的解析器工廠

2>從DOM工廠獲得DOM解析器
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
通過javax.xml.parsers.DocumentBuilderFactory實例的靜態方法newDocumentBuilder()得到DOM解析器

3>把要解析的XML文檔轉化為輸入流,以便DOM解析器解析它
InputStream is=new FileInputStream("bin/library.xml");
InputStream是一個介面。
4>解析XML文檔的輸入流,得到一個Document
Document doc=dombuilder.parse(is);
由XML文檔的輸入流得到一個org.w3c.dom.Document對象,以後的處理都是對Document對象進行的

5>得到XML文檔的根節點
Element root=doc.getDocumentElement();
在DOM中只有根節點是一個org.w3c.dom.Element對象。

6>得到節點的子節點
NodeList books=root.getChildNodes();
for(int i=0;i<books.getLength();i++){
Node book=books.item(i);
}
這是用一個org.w3c.dom.NodeList介面來存放它所有子節點的,還有一種輪循子節點的方法,後面有介紹

7>取得節點的屬性值
String email=book.getAttributes().getNamedItem("email").getNodeValue();
System.out.println(email);
注意,節點的屬性也是它的子節點。它的節點類型也是Node.ELEMENT_NODE

8>輪循子節點
for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()){

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

if(node.getNodeName().equals("name")){

String name=node.getNodeValue();

String name1=node.getFirstChild().getNodeValue();

...

if(node.getNodeName().equals("price")){

String price=node.getFirstChild().getNodeValue();
...

Java通過SAX解析XML
Simple API for XML(簡稱SAX)是個循序存取XML的解析器API。
一個實現SAX的解析器(也就是「SAX Parser」)以一個串流解析器的型式作用,擁有事件驅動API。由使用者定義回調函數,解析時,若發生事件的話會被調用。SAX事件包括:
XML 文字 節點
XML 元素 節點
XML 處理指令
XML 注釋

Java代碼
<person>
<user>
<username>謝成志</username>
<password>6626310xie</password>
<sex>男</sex>
<birthday>1988/11/28</birthday>
<headpic>
<pictitle>ermao</pictitle>
<picurl>images/head1.jpg</picurl>
</headpic>
</user>
</person>

此為下面即將解析度簡單xml結構,並將其封裝成一個User對象。

////////////////////////////////////////////////////////////////////////////////////

Java代碼
<span style="font-family: courier new,courier; font-size: small;">package com.xcz.xml;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

import com.xcz.util.SaxUtil;

public class Sax4XML {

public static void main(String[] args) {

try {
//1.獲取factory
SAXParserFactory factory = SAXParserFactory.newInstance();
//2.獲取parser
SAXParser parser = factory.newSAXParser();
//3.獲取解析時的監聽器對象
SaxUtil su = new SaxUtil();
//4.開始解析
parser.parse(new File("src/user-params.xml"), su);

System.out.println(su.getUser());

} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}
</span>

////////////////////////////////////////////////////////////////////////////////////

Java代碼
<span style="font-family: courier new,courier; font-size: small;">package com.xcz.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.xcz.po.HeadPic;
import com.xcz.po.User;

/**
* 定義xml解析時的監聽類
*
* 實現方式有很多,可以實現介面:ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler
* 但我們常用的繼承:DefaultHandler
*/
public class SaxUtil extends DefaultHandler {

private User user;
private HeadPic headPic;
private String content;
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
content = new String(ch, start, length);
}

//當解析到文本開始時觸發
@Override
public void startDocument() throws SAXException {
super.startDocument();
}

//當解析到文本結束時觸發
@Override
public void endDocument() throws SAXException {
super.endDocument();
}

//當解析到元素開始時觸發
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException
{
if("user".equals(name))
{
user = new User();
}
if("headpic".equals(name))
{
headPic = new HeadPic();
}
}

//當解析到元素結束時觸發
@Override
public void endElement(String uri, String localName, String name)
throws SAXException
{
if("username".equals(name))
{
user.setUsername(content);
}
if("password".equals(name))
{
user.setPassword(content);
}
if("sex".equals(name))
{
user.setSex(content);
}
if("birthday".equals(name))
{
try {
user.setBirthday(sdf.parse(content));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if("pictitle".equals(name))
{
headPic.setPicTitle(content);
}
if("picurl".equals(name))
{
headPic.setPicUrl(content);
user.setHeadPic(headPic);
}

}

public User getUser(){
return user;
}

}</span>

[優點]

(1).節約內存開銷

SAX解析器在某些方面優於DOM風格解析器,因為SAX解析器的內存使用量一般遠低於DOM解析器使用量。DOM解析器在任何處理開始之前,必須將xml以整棵樹放在內存,所以DOM解析器的內存使用量完全根據輸入資料的大小。相對來說,SAX解析器的內存內容,是只基於XML檔案的最大深度(XML樹的最大深度)和單一XML項目上XML屬性儲存的最大資料。

(2)解析速度快

因為SAX事件驅動的本質,處理文件通常會比DOM風格的解析器快。

[缺點]

SAX事件驅動的模型對於XML解析很有用,但它確實有某些缺點。

某些種類的XML驗證需要存取整份文件。例如,一個DTD IDREF屬性需要文件內有項目使用指定字串當成DTD ID屬性。要在SAX解析器內驗證,必須追蹤每個之前遇過的ID和IDREF屬性,檢查是否有任何相符。更甚者,一個IDREF找不到對應的ID,使用者只會在整份文件都解析完後才發現,若這種連結對於建立有效輸出是重要的,那用在處理整份文件的時間只是浪費。

閱讀全文

與bin轉xml工具相關的資料

熱點內容
蘋果手機為什麼不帶收音機功能 瀏覽:145
手機酷狗音樂7去升級 瀏覽:602
編程類的書籍哪個好 瀏覽:378
win10創意版更新 瀏覽:857
惠普bf001ax升級版 瀏覽:364
win10如何更換賬號 瀏覽:183
linux顯示內核 瀏覽:242
excel用按鍵功能打開文件 瀏覽:456
狼人殺文件名字是什麼 瀏覽:679
重裝系統以前的文件 瀏覽:663
全民超神113版本百度 瀏覽:11
編程ts什麼意思 瀏覽:280
炫舞夢工廠新版本134 瀏覽:741
md文件能加圖片嘛 瀏覽:157
java點擊按鈕選擇本地文件 瀏覽:908
自己製作ps漸變預設文件包 瀏覽:358
怎麼登陸蘋果賬號 瀏覽:951
java隨機百分比 瀏覽:625
c語言數學函數頭文件 瀏覽:625
歷年溫度數據怎麼下載 瀏覽:360

友情鏈接