0

我基于此站点上的先前讨论开始此操作: 在 XML 文档中查找兄弟属性

我也在使用 Wonderware,并且有一个字符串阅读器用于检索我需要的标签。我的字符串如下所示:

<ItemsList>
    <Item Name="soapsystemstaus" Alias="112MIX622_TIME.Barbe_Soap"/>
    <Item Name="strSystemDateTime" Alias="112MIX622_TIME.NowMinute"/>
</ItemsList>

这是我试图运行的代码:

dim ItemDBXMLString as string;
dim doc as System.Xml.XmlDocument;      
dim SR as System.IO.StringReader;
dim XdbInd as indirect;

XdbInd.BindTo( Me.DIO.Name + "." + Me.DIO.ScanGroup + ".AliasDatabase" );
ItemDBXMLString = XdbInd;

doc = new System.Xml.XmlDocument;   

SR = new System.IO.StringReader(ItemDBXMLString);

try
    doc.Load(SR);
    LogMessage(System.String.Format("SR Loaded into doc! <<<=== ******"));

注意:间接是一种变量,可以用作引用其他区域内容的指针,因此基本上:

XdbInd.BindTo( Me.DIO.Name + "." + Me.DIO.ScanGroup + ".AliasDatabase" );
ItemDBXMLString = XdbInd;

创建对包含我在本文开头显示的字符串的内存区域的引用。如何将此字符串加载到 Xml 文档中是我提出问题的原因。当我收到指令时:“doc.Load(SR);” 我收到一个错误:

System.Xml: The URL cannot be empty. Parameter name: url

在我的无知中,我从来不知道我必须指定一个 url 才能读取 Xml,一直认为 Xml 是一种数据传输工具。尝试在 XmlDocument 中加载 Xml 时,有没有其他人遇到过类似的错误?非常感谢任何帮助或提示。(System.IO.StringReader等全部声明的原因是Wonderware脚本语言中缺少Imports,除了语言,还支持.Net framework 4.5)

4

1 回答 1

1

好的,所以终于找到了方法(感谢所有人,尤其是vintastic):

dim ItemDBXMLString as string;
dim SR as System.IO.StringReader; 
dim doc as System.Xml.XmlDocument;
dim XmlString as System.String;
dim XdbInd as indirect;

XdbInd.BindTo( Me.DIO.Name + "." + Me.DIO.ScanGroup + ".AliasDatabase" );
ItemDBXMLString = XdbInd;

doc = new System.Xml.XmlDocument();
SR = new System.IO.StringReader(ItemDBXMLString);

doc.LoadXml(ItemDBXMLString);
root = doc.DocumentElement; 
dim sTagTest as string;
dim sScanGroup as string;
sScanGroup = Me.DIO.ScanGroup;

' an = Field Attribute we are looking for
sTagTest = sScanGroup+isep+an;

'PLCTag = name of the tag on the PLC corresponding to 'an'
PLCTag = root.SelectSingleNode("/ItemsList/Item [translate(@Alias, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='" + sTagTest.ToLower() + "']/@Name").InnerText;
于 2017-08-24T13:02:26.263 回答