刚用vb 写的方法: Dim m_objXMLNodeList As XmlNodeList Dim m_sLocalDir As String Dim objXMLDoc As New XmlDocument m_sLocalDir = Configuration.ConfigurationSettings.AppSettings("Error.Message") objXMLDoc.Load(m_sLocalDir) m_objXMLNodeList = objXMLDoc.DocumentElement.ChildNodes For Each objXMLNode As XmlNode In m_objXMLNodeList If objXMLNode.HasChildNodes Then If objXMLNode.FirstChild.InnerText = sCode Then Return objXMLNode.LastChild.InnerText End If End If Next
不知如何定位到type为某一值的address!
然后用getattribute("type")找到属性值
xmlDoc.Load(yourfile);
XmlNode Node = xmlDoc.SelectSingleNode("/po/items/item/address[@type=billing1]");以上代码将获得节点<address type="billing1">……/address>
<item quantity="1" productCode="R-273" description="14.4 Volt Cordless Drill" unitCost="189.95" />这后面那个“/”应该去掉,不然不行
-------------------------------------------------
XmlDocument Xmldoc=new XmlDocument();
Xmldoc.Load(@"e:\123.xml");
//Create address1
XmlElement XmlEle=Xmldoc.CreateElement("address1");
//set Attribute
XmlEle.SetAttribute("type","test");
XmlNode nodeName=Xmldoc.CreateElement("name");
nodeName.InnerText="Test";XmlNode nodestreet=Xmldoc.CreateElement("street");
nodestreet.InnerText="Test";
XmlNode nodecity=Xmldoc.CreateElement("city");
nodecity.InnerText="china";XmlNode nodestate=Xmldoc.CreateElement("state");
nodestate.InnerText="c.n";XmlNode nodezip=Xmldoc.CreateElement("zip");
nodezip.InnerText="1234";
XmlEle.AppendChild(nodeName);
XmlEle.AppendChild(nodestreet);
XmlEle.AppendChild(nodecity);
XmlEle.AppendChild(nodestate);
XmlEle.AppendChild(nodezip);//定位到最后一个address节点
XmlNode nodeAddress=Xmldoc.DocumentElement.SelectSingleNode("/po/items/item/address[last()]");
//添加 address1
nodeAddress.AppendChild(XmlEle);Xmldoc.Save(@"e:\123.xml");
XmlNode nodeAddress=Xmldoc.DocumentElement.SelectSingleNode("/po/items/item[last()]");
我说过了,address的路径是动态的,也就是说不能用po/items/item/address来定位.
我用的是笨办法不知各位可有好办法.
参与者有分!
Dim m_objXMLNodeList As XmlNodeList
Dim m_sLocalDir As String
Dim objXMLDoc As New XmlDocument
m_sLocalDir = Configuration.ConfigurationSettings.AppSettings("Error.Message")
objXMLDoc.Load(m_sLocalDir)
m_objXMLNodeList = objXMLDoc.DocumentElement.ChildNodes
For Each objXMLNode As XmlNode In m_objXMLNodeList
If objXMLNode.HasChildNodes Then
If objXMLNode.FirstChild.InnerText = sCode Then
Return objXMLNode.LastChild.InnerText
End If
End If
Next
是po/items/item/address 为动态的,由可能为po/items/item/test/book/address !