You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
298 lines
11 KiB
298 lines
11 KiB
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Xml;
|
|
|
|
using Autodesk.AutoCAD.ApplicationServices;
|
|
using Autodesk.AutoCAD.EditorInput;
|
|
|
|
namespace Teamcenter.Hello
|
|
{
|
|
public class ReaderCusXML
|
|
{
|
|
private XmlTextReader textReader;
|
|
private XmlDocument doc;
|
|
public ArrayList list = new ArrayList();
|
|
private Editor ed;
|
|
|
|
public ReaderCusXML()
|
|
{
|
|
}
|
|
|
|
public ReaderCusXML(string filepath, Document appodc)
|
|
{
|
|
ed = appodc.Editor;
|
|
try
|
|
{
|
|
// 打开一个 XML 文件
|
|
textReader = new XmlTextReader(filepath);
|
|
doc = new XmlDocument();
|
|
doc.Load(textReader);
|
|
}
|
|
catch (Exception s)
|
|
{
|
|
Console.WriteLine("Exception: {0}", s.ToString());
|
|
}
|
|
}
|
|
|
|
public ReaderCusXML(string filepath, Editor ed1)
|
|
{
|
|
this.ed = ed1;
|
|
try
|
|
{
|
|
// 打开一个 XML 文件
|
|
textReader = new XmlTextReader(filepath);
|
|
doc = new XmlDocument();
|
|
doc.Load(textReader);
|
|
}
|
|
catch (Exception s)
|
|
{
|
|
Console.WriteLine("Exception: {0}", s.ToString());
|
|
}
|
|
}
|
|
|
|
public void close()
|
|
{
|
|
if (textReader != null)
|
|
textReader.Close();
|
|
}
|
|
|
|
//获取指定的节点
|
|
private XmlNode getNode(XmlDocument doc, string nodeName)
|
|
{
|
|
XmlNodeList nodelist = doc.ChildNodes;
|
|
int nodenum = nodelist.Count;
|
|
Console.WriteLine("共有 " + nodenum + " 个节点");
|
|
|
|
foreach (XmlNode node in nodelist)
|
|
{
|
|
if (nodeName.Equals(node.Name))
|
|
return node;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
//获取特定内容
|
|
public void GetALL(string root, string nodeName)
|
|
{
|
|
XmlReader reader = new XmlNodeReader(doc);
|
|
bool isroot = true;
|
|
Console.WriteLine("************************************");
|
|
list.Clear();
|
|
while (reader.Read())
|
|
{
|
|
//ed.WriteMessage("name:"+reader.Name+"\n");
|
|
switch (reader.NodeType)
|
|
{
|
|
case XmlNodeType.XmlDeclaration:
|
|
break;
|
|
case XmlNodeType.Element:
|
|
if (isroot)
|
|
{
|
|
ed.WriteMessage(isroot+"\n");
|
|
if (!root.Equals(reader.Name))
|
|
continue;
|
|
else
|
|
isroot = false;
|
|
}
|
|
else if (nodeName.Equals(reader.Name))
|
|
{
|
|
//ed.WriteMessage("============\n");
|
|
if (reader.HasAttributes)
|
|
{
|
|
while (reader.MoveToNextAttribute())
|
|
{
|
|
//ed.WriteMessage(string.Format("{0}={1}\n", reader.Name, reader.Value));
|
|
list.Add(reader.Value);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case XmlNodeType.EndElement:
|
|
if (root.Equals(reader.Name))
|
|
isroot = true;
|
|
break;
|
|
case XmlNodeType.Text:
|
|
Console.WriteLine(string.Format("内容是:{0}", reader.Value));
|
|
break;
|
|
}
|
|
}
|
|
Console.WriteLine("************************************");
|
|
//showList();
|
|
return ;
|
|
}
|
|
|
|
//显示list
|
|
private void showList()
|
|
{
|
|
ed.WriteMessage("-----------------------\n");
|
|
foreach (object o in list)
|
|
{
|
|
ed.WriteMessage((string)o+"\n");
|
|
}
|
|
ed.WriteMessage("-----------------------\n");
|
|
}
|
|
|
|
//显示所有内容
|
|
public void show()
|
|
{
|
|
XmlReader reader = new XmlNodeReader(doc);
|
|
Console.WriteLine("************************************");
|
|
while (reader.Read())
|
|
{
|
|
switch (reader.NodeType)
|
|
{
|
|
case XmlNodeType.XmlDeclaration:
|
|
Console.WriteLine(string.Format("<?{0}\t{1}?>", reader.Name, reader.Value));
|
|
break;
|
|
case XmlNodeType.Element:
|
|
Console.Write(string.Format("<{0}\t", reader.Name));
|
|
if (reader.HasAttributes)
|
|
{
|
|
while (reader.MoveToNextAttribute())
|
|
{
|
|
Console.Write(string.Format("{0}={1}\t", reader.Name, reader.Value));
|
|
}
|
|
}
|
|
Console.WriteLine(">");
|
|
break;
|
|
case XmlNodeType.EndElement:
|
|
Console.WriteLine(string.Format("</{0}>", reader.Name));
|
|
break;
|
|
case XmlNodeType.Text:
|
|
Console.WriteLine(string.Format("内容是:{0}", reader.Value));
|
|
break;
|
|
}
|
|
}
|
|
Console.WriteLine("************************************");
|
|
}
|
|
|
|
//获取信息
|
|
public Dictionary<string, string> GetTitleInfo(string root, string blockName, string itemType)
|
|
{
|
|
XmlReader reader = new XmlNodeReader(doc);
|
|
bool rangeStart = true;
|
|
bool isroot = true;
|
|
bool matched = false;
|
|
string temp = "anybody";
|
|
string block = "";
|
|
string type = "";
|
|
string cad = "";
|
|
string tc = "";
|
|
bool writeable = false;
|
|
|
|
Dictionary<string, string> formAttrs = new Dictionary<string, string>();
|
|
|
|
Console.WriteLine("************************************");
|
|
|
|
while (reader.Read())
|
|
{
|
|
//ed.WriteMessage("name:"+reader.Name+"\n");
|
|
switch (reader.NodeType)
|
|
{
|
|
case XmlNodeType.XmlDeclaration:
|
|
break;
|
|
case XmlNodeType.Element:
|
|
if (rangeStart)
|
|
{
|
|
if (isroot)
|
|
{
|
|
temp = reader.Name;
|
|
if (!root.Equals(temp))
|
|
rangeStart = false;
|
|
else
|
|
isroot = false;
|
|
}
|
|
else if ("extension".Equals(reader.Name))
|
|
{
|
|
matched = true;
|
|
if (reader.HasAttributes)
|
|
{
|
|
while (reader.MoveToNextAttribute())
|
|
{
|
|
//ed.WriteMessage(string.Format("{0}={1}\n", reader.Name, reader.Value));
|
|
if ("BlockName".Equals(reader.Name))
|
|
block = reader.Value;
|
|
else if ("ItemType".Equals(reader.Name))
|
|
type = reader.Value;
|
|
}
|
|
}
|
|
}
|
|
else if (matched)
|
|
{
|
|
//是否是想要的信息
|
|
{
|
|
if ((block.Equals(blockName)) && (type.Equals(itemType)))
|
|
{
|
|
matched = true;
|
|
}
|
|
else
|
|
{
|
|
matched = false;
|
|
temp = "extension";
|
|
rangeStart = false;
|
|
continue;
|
|
}
|
|
}
|
|
if ("Item".Equals(reader.Name))
|
|
{
|
|
}
|
|
else if ("ItemRevision".Equals(reader.Name))
|
|
{
|
|
}
|
|
else if ("Form".Equals(reader.Name))
|
|
{
|
|
if (reader.HasAttributes)
|
|
{
|
|
while (reader.MoveToNextAttribute())
|
|
{
|
|
//Console.WriteLine(string.Format("{0}={1}\n", reader.Name, reader.Value));
|
|
if ("cad".Equals(reader.Name))
|
|
cad = reader.Value;
|
|
else if ("tc".Equals(reader.Name))
|
|
{
|
|
tc = reader.Value;
|
|
}
|
|
else if ("writeable".Equals(reader.Name))
|
|
{
|
|
if ("1".Equals(reader.Value))
|
|
writeable = true;
|
|
else
|
|
writeable = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case XmlNodeType.EndElement:
|
|
if (temp.Equals(reader.Name))
|
|
rangeStart = true;
|
|
else if ("Form".Equals(reader.Name))
|
|
{
|
|
//Console.WriteLine(string.Format("cad={0},tc={1}", cad, tc));
|
|
if (writeable)
|
|
{
|
|
formAttrs.Add(cad, tc);
|
|
cad = "";
|
|
tc = "";
|
|
writeable = false;
|
|
}
|
|
}
|
|
break;
|
|
case XmlNodeType.Text:
|
|
break;
|
|
}
|
|
}
|
|
reader.Close();
|
|
Console.WriteLine("************************************");
|
|
return formAttrs;
|
|
}
|
|
}
|
|
} |