0

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」にラベルがあり、このテキストプロパティを...のコンテンツに変更したい。

..。

<resources>
    <id>id_SearchUser</id>        
    <text>Benutzer</text>
</resources>

...。

そしてテキストはベヌッツァーよりです。

私の方法:

public string GetXMLElement()
{
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(Server.MapPath("~/App_Data/de_language.xml"));
    XmlNode node = // ??
    return // node as string
}
4

4 に答える 4

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を使用してノードを取得します。それは好みの問題です。

于 2012-08-03T08:38:04.400 に答える
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.
于 2012-08-03T08:39:19.160 に答える
0

xpathでノードにアクセスできます

http://msdn.microsoft.com/en-us/library/hcebdtae.aspx

于 2012-08-03T08:36:10.703 に答える
0

xpathを使用して、必要なノードを選択することをお勧めします。MSDNのxpathリファレンスは、このための優れたリソースです。

次に、SelectSingleNodeメソッドを使用してそのノードを見つける必要があります。

于 2012-08-03T08:36:17.573 に答える