我想从XML文件中获取一个元素。但我不知道如何从XML获得一个元素。
我的XML文件:
<?xml version="1.0" standalone="yes" ?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="resources">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" minOccurs="0" />
<xs:element name="text" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<resources>
<id>id_SearchUser</id> <!--Label lblSearchUser-->
<text>Benutzer</text>
</resources>
<resources>
<id>id_location</id> <!--Label lblLocation-->
<text>Werk</text>
</resources>
<resources>
<id>id_Search</id> <!--Button Button2-->
<text>Suchen</text>
</resources>
<resources>
<id>id_User</id> <!--Label lblUser-->
<text>Benutzer</text>
</resources>
<resources>
<id>id_eMail</id> <!-- Label lblEmail-->
<text>eMail</text>
</resources>
<resources>
<id>id_Firstname</id> <!--LinkLabel lnkFirstname-->
<text>Vorname</text>
</resources>
<resources>
<id>id_Lastname</id> <!--LinkLabel lnkLastname-->
<text>Nachname</text>
</resources>
<resources>
<id>id_Telephonnumber</id> <!--Label lblTelephon-->
<text>Telefon</text>
</resources>
</NewDataSet>
我的想法:
我获得了用户的位置。例如“de”,而不是我想调用给我元素内容的GetXMLElement方法。
例如:
我的应用程序“id_SearchUser”中有一个Label,我希望此文本属性更改为...的内容。
...
<resources>
<id>id_SearchUser</id>
<text>Benutzer</text>
</resources>
...
和文字比Benutzer。
我的方法:
public string GetXMLElement()
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("~/App_Data/de_language.xml"));
XmlNode node = // ??
return // node as string
}
答案 0 :(得分:5)
这个怎么样?
XDocument document = XDocument.Load(Server.MapPath("~/App_Data/de_language.xml"));
XElement element = document.Root.Elements("resources").FirstOrDefault(e => e.Element("id").Value == "id_SearchUser");
string text;
if (element != null)
text = element.Element("text").Value;
请注意,我使用XDocument
而不是XmlDocument
,XDocument使用LINQ,而XmlDocument使用XPATH来获取节点。这是一个偏好的问题。
答案 1 :(得分:1)
您可以使用XQuery获取所需的元素:
这是一个简单的例子:
XPathDocument doc = new XPathDocument(Server.MapPath("~/App_Data/de_language.xml"));
var nav = doc.CreateNavigator();
var nodes = nav.select("/xpath/to/the/node/you/want/to/select"); // for example /resources/id/text
nodes.First();
// now nodes.Current.Value is the value of the node you've just selected.
答案 2 :(得分:0)
您可以通过xpath访问节点
答案 3 :(得分:0)
您需要使用xpath选择所需的节点。 xpath reference on MSDN是一个很好的资源。
然后,您需要使用SelectSingleNode method来查找该节点。