Autodesk Vault API 类的Xml Serialization攻略
译自Vault API帮助文档中一篇 Doug Redmond写的knowledgebase article. Doug's 博客是 It's All Just Ones and Zeros
你也许不知道所有Vault API 类都可以 XML 序列化 - 这意味着很容易把API对象转换为 XML 文本,反之亦然。
很多种情况下可以使用此功能,例如:
它可以帮助您调试代码。如果您具有大量数据的对象,将该对象存为XML格式方便研究。
如果您向ADN提交问题,可以将XML序列化的对象作为您的问题说明的一部分。
存储信息供以后使用。只需记住,此信息在下一版本中可能会更改。
您可以使用XML序列化后的信息作为检测对象是否已发生变更的参照物。例如您编写了一个设置生命周期的程序,您希望您的程序检测到是否有人干预了生命周期设置。
下面是一些Vault API XML 序列化的示例代码:
C#:
private bool DidItChange(LfCycDef def)
{
// serialize the object
StringBuilder currentXML = new StringBuilder();
XmlSerializer serializer = new XmlSerializer(typeof(DocEx.LfCycDef));
using (TextWriter writer = new StringWriter(currentXML))
{
serializer.Serialize(writer, def);
}
// read in the stored XML
string originalXML = System.IO.File.ReadAllText("correct.xml");
// now all you have to do is compare the two
return (originalXML != currentXML.ToString()); }
VB:
private function DidItChange(def as LfCycDef ) as boolean
' serialize the object
dim currentXML as StringBuilder = new StringBuilder()
dim serializer as XmlSerializer = new XmlSerializer(GetType(LfCycDef))
using writer as TextWriter = new System.IO.StringWriter(currentXML)
serializer.Serialize(writer, def)
end using
' read in the stored
相关文档:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
public class XMLReader {
priv ......
1 类似xmlns=""的文件
示例XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<WebSrvMessage xmlns="http://www.lenoval.com/">
<version>1.0</version>
<DataContent>
<DateTag>2010-5-17</DateTag>
</DataCont ......
Step 1:Form1 上添加一个ToolStripContainer控件
Step2:实现代码
private void Form2_Load(object sender, EventArgs e)
{
CMenuEx menu = new CMenuEx();
string sPath = "D:\\Menu.xml";//xml的内容
if (menu.FileExit())
&nb ......
XML和HTML常用转义字符
XML和HTML中都有一些特殊的字符,这些字符在XML和HTML中是不能直接使用的,如果必须使用这些字符,应该使用其对应的转义字符。
如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。
所以不应该像下面那样书写代码:
<message&g ......