我需要从一个大的 XML 文件中获取一些 URL。
XML 文件的结构如下。
<Main>
<Product>
<Images>
<URL>image1.jpg</URL>
<URL>image2.jpg</URL>
<URL>image3.jpg</URL>
<URL>image4.jpg</URL>
</Images>
</Product>
......
我需要将所有链接提取到一个文本文件中。有没有关于如何做到这一点的想法 /?
我需要从一个大的 XML 文件中获取一些 URL。
XML 文件的结构如下。
<Main>
<Product>
<Images>
<URL>image1.jpg</URL>
<URL>image2.jpg</URL>
<URL>image3.jpg</URL>
<URL>image4.jpg</URL>
</Images>
</Product>
......
我需要将所有链接提取到一个文本文件中。有没有关于如何做到这一点的想法 /?
xml_grep
命令,该命令包含在XML::Twig中(可在Activestate Perl,Strawberry Perl或当然也可以在CentOS上获取)。请注意保留HTML标记。xml_grep --text_only URL product_file.xml > url.txt
public static void Main(string[] Arguments)
{
XmlDocument oXmlDocument = new XmlDocument();
oXmlDocument.Load(@"XmlFile.xml");
using (StreamWriter oStreamWriter = new StreamWriter(File.OpenWrite(@"Output.txt")))
{
XmlNodeList oXmlNodeList = oXmlDocument.SelectNodes("//URL");
oXmlNodeList.OfType<XmlNode>().ToList<XmlNode>().ForEach(m => oStreamWriter.WriteLine(m.InnerText));
}
}
System.Xml.Linq
,因为它使用LINQ to XML。首先,我们使用XDocument.Load(...)
加载XML文档:// Load the raw XML into an XDocument.
var doc = XDocument.Load(new StringReader(@"<Main>
<Product>
<Images>
<URL>image1.jpg</URL>
<URL>image2.jpg</URL>
<URL>image3.jpg</URL>
<URL>image4.jpg</URL>
</Images>
</Product>
</Main>"));
StringReader
和示例字符串,但你应该将其更改为加载您的 XML 文件的内容。例如,XDocument.Load("C:\folder\file.xml")
将加载一个文件(请参见XDocument.Load(string)).// Create a list to store the URLs in.
var urls = new List<string>();
// Get the <Main> element.
var mainNode = doc.Element("Main");
// Loop through the <Product> elements...
foreach (var productNode in mainNode.Elements("Product"))
{
// Loop through the <Images> elements (if there's more than one).
foreach (var imagesNode in productNode.Elements("Images"))
{
// Loop through the <URL> elements...
foreach (var urlNode in imagesNode.Elements("URL"))
{
// The "Value" property is the text within the element.
urls.Add(urlNode.Value);
}
}
}
// Write the URLs out to the Debug output.
foreach (var url in urls)
Debug.WriteLine(url);
此时,您将拥有一个URL列表。如果您想将它们写入文件,这是一个示例:
// Create an output file.
using(var outputFile = File.Create("output.txt"))
{
var writer = new StreamWriter(outputFile);
foreach (var url in urls)
writer.WriteLine(url);
}
你不一定需要像我那样创建列表并将其写入文件--你可以在读取它们时将URL直接写入文本文件中。
如果还有其他需要帮助的地方,请告诉我。
你只需要URL吗?
给定的结构看起来像是URL与图像/产品数据相关联的?如果你不关心其他数据,只需要所有的URL,那么正则表达式应该是最好的选择。